<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vijendra-Tech</title>
    <description>The latest articles on DEV Community by Vijendra-Tech (@vijendra).</description>
    <link>https://dev.to/vijendra</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1061439%2F3ccf0ce2-ce39-476c-be08-3b0dbab8ee8e.png</url>
      <title>DEV Community: Vijendra-Tech</title>
      <link>https://dev.to/vijendra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vijendra"/>
    <language>en</language>
    <item>
      <title>Javascript promise in depth: examples</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Mon, 10 Jul 2023 06:19:02 +0000</pubDate>
      <link>https://dev.to/vijendra/javascript-promise-in-depth-examples-2kk0</link>
      <guid>https://dev.to/vijendra/javascript-promise-in-depth-examples-2kk0</guid>
      <description>&lt;p&gt;Javascript Promise became popular when it was introduced. Javascript promise is mainly used to handle asynchronous tasks. In this article, we will deep dive into promise through examples.&lt;br&gt;
Promise state:&lt;br&gt;
A Javascript promise can have only one state in either fulfilled or rejected.&lt;/p&gt;

&lt;p&gt;A promise in a state of fulfillment or rejection is called a promise settled.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Yxxcp9t6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zjuc4zcjp0xbif4rfke3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Yxxcp9t6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zjuc4zcjp0xbif4rfke3.png" alt="Image description" width="388" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example#1&lt;br&gt;
Promise with resolved state&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Asnc function always return Promsie with resolve or resolve state&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMyName&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Vijendra Rana&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;//OR&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMyName&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Vijendra Rana&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;//or&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMyName&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Vijendra Rana&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#2&lt;br&gt;
Promise with rejected state&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Asnc function always return Promsie with resolve or resolve state&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMyName&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;span class="c1"&gt;//Throw here return Promise with rejected state with reason&lt;/span&gt;
  &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Name not found&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;//OR&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMyName&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Name not found&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;//or&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMyName&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Name not found&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;//Error - when promise rejected, provide proper reason using Error&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#3&lt;br&gt;
Get a response from resolved Promise - By using then() chain method&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;getMyName&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;------&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#4&lt;br&gt;
Handle rejected the promise. catch() chain method&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;getMyName&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;------&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;//log the reasons&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#5&lt;br&gt;
in then(), we can add resolve and reject handler&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Reject Hanndler&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getAllNames&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id is undefined&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;//every Promise has resolve and reject hander&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;namePromise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;getAllNames&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// namePromise&lt;/span&gt;
&lt;span class="c1"&gt;//   .then((res) =&amp;gt; {&lt;/span&gt;
&lt;span class="c1"&gt;//     console.log(res);&lt;/span&gt;
&lt;span class="c1"&gt;//   })&lt;/span&gt;
&lt;span class="c1"&gt;//   .catch((err) =&amp;gt; {&lt;/span&gt;
&lt;span class="c1"&gt;//     console.warn(err);&lt;/span&gt;
&lt;span class="c1"&gt;//   });&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;namePromise&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;namePromise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Resolved&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Unresolved&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#6&lt;br&gt;
finally() to clean up purpose.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//finally to clean up&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMovies&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Id req&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;getMovies&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Unsuccessful attempt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;error--&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;....&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;more clean up work&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#7&lt;br&gt;
Return reject promise from resolve handler when the response is not ok.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Promise to reject&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMovies&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;getMovies&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;unsuccessful response&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;---!!!!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#8&lt;br&gt;
Create Promise with Promise constructor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Promise Constructor&lt;/span&gt;
&lt;span class="c1"&gt;// const promise = new Promise((resolve, reject) =&amp;gt; {&lt;/span&gt;
&lt;span class="c1"&gt;//   // do some async operation then return promise with resolved state&lt;/span&gt;
&lt;span class="c1"&gt;//   setTimeout(() =&amp;gt; {&lt;/span&gt;
&lt;span class="c1"&gt;//     resolve();&lt;/span&gt;
&lt;span class="c1"&gt;//   }, [1000]);&lt;/span&gt;
&lt;span class="c1"&gt;// });&lt;/span&gt;

&lt;span class="c1"&gt;//refactor to sleep&lt;/span&gt;
&lt;span class="c1"&gt;// function sleep(ms) {&lt;/span&gt;
&lt;span class="c1"&gt;//   return new Promise((resolve) =&amp;gt; {&lt;/span&gt;
&lt;span class="c1"&gt;//     // do some async operation then return promise with resolved state&lt;/span&gt;
&lt;span class="c1"&gt;//     setTimeout(() =&amp;gt; {&lt;/span&gt;
&lt;span class="c1"&gt;//       resolve();&lt;/span&gt;
&lt;span class="c1"&gt;//     }, [ms]);&lt;/span&gt;
&lt;span class="c1"&gt;//   });&lt;/span&gt;
&lt;span class="c1"&gt;// }&lt;/span&gt;
&lt;span class="c1"&gt;//further refactor&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// do some async operation then return promise with resolved state&lt;/span&gt;
    &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;//resolve invoked jsut after constructor called not an asynchronous call so if&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Rejectsleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+++++&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="c1"&gt;// This line will not be reachable&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Resolved&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Rejected from resolved promise&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;Rejectsleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Resolved&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Rejected from resolved promise&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#9&lt;br&gt;
Convert callback to Promise&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//convert call back to promise&lt;/span&gt;

&lt;span class="c1"&gt;//read file from fs lib, Node api use callback heavily&lt;/span&gt;
&lt;span class="c1"&gt;// import { readFile } from "fs";&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//this is  callback based&lt;/span&gt;
&lt;span class="c1"&gt;// fs.readFile(__filename, "utf-8", (error, contents) =&amp;gt; {&lt;/span&gt;
&lt;span class="c1"&gt;//   if (error) {&lt;/span&gt;
&lt;span class="c1"&gt;//     console.error(error);&lt;/span&gt;
&lt;span class="c1"&gt;//   } else {&lt;/span&gt;
&lt;span class="c1"&gt;//     console.log(contents);&lt;/span&gt;
&lt;span class="c1"&gt;//   }&lt;/span&gt;
&lt;span class="c1"&gt;// });&lt;/span&gt;

&lt;span class="c1"&gt;//convert to Promise based app&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;readFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;encoding&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;encoding&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;readFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;utf8&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#10&lt;br&gt;
Promise.race() - get the fastest settled promise&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Promise.race()&lt;/span&gt;

&lt;span class="c1"&gt;//examplep-1&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;resolveAfter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// const pA = resolveAfter(1000, "A");&lt;/span&gt;
&lt;span class="c1"&gt;// const pB = resolveAfter(2000, "B");&lt;/span&gt;

&lt;span class="c1"&gt;// const PResult = Promise.race([pA, pB]);&lt;/span&gt;
&lt;span class="c1"&gt;// PResult.then((val) =&amp;gt; {&lt;/span&gt;
&lt;span class="c1"&gt;//   console.log(val);&lt;/span&gt;
&lt;span class="c1"&gt;// });&lt;/span&gt;

&lt;span class="c1"&gt;//Least use of Race  method but in one case&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;promise&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;timeoutId&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;timeoutPromise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;timeoutId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Operation timed out after &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;race&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;promise&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;timeoutPromise&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;clearTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;timeoutId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;promise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;resolveAfter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Promise A&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;promise&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#11&lt;br&gt;
Promise.all() - get all promises when all API calls parallel&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Promise.all&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMovieTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Iron Man&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMovieId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;actor&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// getMovieId("Rachel","RJD").then((res) =&amp;gt;{&lt;/span&gt;
&lt;span class="c1"&gt;//     if(res){&lt;/span&gt;
&lt;span class="c1"&gt;//         getMovieTitle(res).then((t) =&amp;gt;{&lt;/span&gt;
&lt;span class="c1"&gt;//             console.log('++++',t);&lt;/span&gt;
&lt;span class="c1"&gt;//         })&lt;/span&gt;
&lt;span class="c1"&gt;//     }&lt;/span&gt;

&lt;span class="c1"&gt;// })&lt;/span&gt;

&lt;span class="c1"&gt;//If both are independent call then call Parallely&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;promsies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;all&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="nx"&gt;getMovieId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Rachel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;RJD&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="nx"&gt;getMovieTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="c1"&gt;// console.log('Fullfilled Promsie',promsies);&lt;/span&gt;
&lt;span class="nx"&gt;promsies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(([&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// const id = res[0]&lt;/span&gt;
    &lt;span class="c1"&gt;// const title = res[1]&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//do some clean up work&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;//in order Promise to  be fullfilled , all promise must be fullfilled&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#12&lt;br&gt;
If any promise failed from Promsie.all() then no return one Promsie with rejected state. So Promsie.allSettled()&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Promsie.allSettled&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMovieTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Something Wrong!!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMovieId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;actor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;//Promise.allSettled always return settlled  promise&lt;/span&gt;
&lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;allSettled&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;getMovieId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Rachel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;RJD&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;getMovieTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)]).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fulfilled&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fulfilled&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#13&lt;br&gt;
Promise. any() - &amp;gt; In the real word, API failed. To make it resilient we can use Promise.any()&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Promsie.any() to make more resilinet in api down time&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;promises&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Fail#1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
  &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Fail#2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="c1"&gt;//   Promise.resolve(2),&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Promsie.any return fullfilled promise if any Promise is fullfilled&lt;/span&gt;

&lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;promises&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fullfilled &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example#14&lt;br&gt;
Async/Await - We can use better readable code with async/await keyword from JS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Async/Await&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMovies&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="c1"&gt;// reject(Error("Erorr Occured"));&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getMovies2&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;a1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;b1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;c1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//it is a sequential api call&lt;/span&gt;
    &lt;span class="c1"&gt;// const movies = await getMovies();&lt;/span&gt;
    &lt;span class="c1"&gt;// const movies2 = await getMovies2();&lt;/span&gt;
    &lt;span class="c1"&gt;//parrallel&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;movies&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;movies2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;all&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
      &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;getMovies&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
      &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;getMovies2&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+++++&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;movies&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;movies2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Some error occured&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hope it will help to understand and write promise-based codes in JS.&lt;/p&gt;

&lt;p&gt;Next, we will deep dive into Async/Await. Check my &lt;a href="https://vijendrarana.blog/"&gt;articles &lt;/a&gt;to know more about technical stuff.&lt;/p&gt;

&lt;p&gt;Happy coding :)&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>web</category>
      <category>promise</category>
    </item>
    <item>
      <title>Framework for LLM apps</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Wed, 21 Jun 2023 11:19:50 +0000</pubDate>
      <link>https://dev.to/vijendra/framework-for-llm-apps-4md4</link>
      <guid>https://dev.to/vijendra/framework-for-llm-apps-4md4</guid>
      <description>&lt;p&gt;To Build better apps, we need always a framework. If you want to build LLM apps then Langchain is a framework that will provide all the necessary needs for LLM apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Langchain Framework
&lt;/h2&gt;

&lt;p&gt;Langchain is open source for LLM apps.&lt;/p&gt;

&lt;p&gt;Currently, Langchain provides Python and Javascript (typescript) libraries. It focuses on composition and modularity and is a common way to combine.&lt;br&gt;
The major components provided by Langchain are:&lt;br&gt;
Models - We can use any LLM models.&lt;/p&gt;

&lt;p&gt;Prompts- we can pass prompts to the model.&lt;/p&gt;

&lt;p&gt;Parse - we can parse LLM output before replying to users.&lt;/p&gt;

&lt;p&gt;Indexes - It can index large chunks of text.&lt;/p&gt;

&lt;p&gt;Memory- it can memorize the previous conversation of users.&lt;/p&gt;

&lt;p&gt;Chain - It can perform a sequence of operations on your data.&lt;/p&gt;

&lt;p&gt;Evaluation - To evaluate your app whether it is meeting the defined criterion.&lt;/p&gt;

&lt;p&gt;Agents- Give instructions to LLM to perform some tasks by allowing using external tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Models, Prompt and Parsing
&lt;/h2&gt;

&lt;p&gt;We can use any kind of modal and we can provide some instruction as prompt.&lt;/p&gt;

&lt;p&gt;if we use the Open AI model - all response is a string format but looks like a Python dictionary. By using Langchain , it will automatically parse outputs to the dictionary so that we can use it as a key to get a particular answer.&lt;/p&gt;

&lt;p&gt;Langchain provides Prompt Template.&lt;/p&gt;

&lt;p&gt;Why use it?&lt;br&gt;
Sometimes Prompts can be long and detailed.&lt;/p&gt;

&lt;p&gt;Langchain reuse good prompts whenever you want.&lt;/p&gt;

&lt;p&gt;Langchain provides prompts for common operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory
&lt;/h2&gt;

&lt;p&gt;Sometimes or most of the time we need the LLM model to remember the previous part of the conversation and feed that into language.&lt;br&gt;
Since LLM models are stateless and each transaction is independent. Chatbots appear to have memory by providing the full conversation as a context.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8slULnOj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9cinbhchf2u1cc4uwv7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8slULnOj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9cinbhchf2u1cc4uwv7k.png" alt="Image description" width="487" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But memory can be very long so more tokens and if more tokens then more costly.&lt;/p&gt;

&lt;p&gt;So Langchain provides several kinds of memory to store and accumulate the conversation.&lt;/p&gt;

&lt;p&gt;Memory types:&lt;/p&gt;

&lt;p&gt;ConversationBufferMemory&lt;/p&gt;

&lt;p&gt;ConversationBufferWindowMemory&lt;/p&gt;

&lt;p&gt;ConversationSummaryMemory&lt;/p&gt;

&lt;h2&gt;
  
  
  Chains
&lt;/h2&gt;

&lt;p&gt;To carry a sequence of tasks based on your data. Langchain provides chains as one of the core features.&lt;/p&gt;

&lt;p&gt;LLM chain is the very basic type of chain&lt;/p&gt;

&lt;p&gt;Sequential Chain - The idea to combine all chains where the output of one chain is the input of the next chain.&lt;/p&gt;

&lt;p&gt;Router chain - chaining based on some routing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Question and Answering based on Documents
&lt;/h2&gt;

&lt;p&gt;One of the very common applications Q &amp;amp;A based on uploaded documents. We can store the documents in a vector store and can upload documents using the Document loader provided by Langchain.&lt;/p&gt;

&lt;p&gt;But How can answer big files as we know that every LLM model has max tokens limit? So for these reasons, Embedding and Vector store comes into the picture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nWfRuY2R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u9h5h7l7wfx66h7akez9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nWfRuY2R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u9h5h7l7wfx66h7akez9.png" alt="Image description" width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Embedding Vector captures contents/meaning and text with similar content will have similar vectors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluations
&lt;/h2&gt;

&lt;p&gt;We always want to know if the LLM apps that we are developing must meet the criteria.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents
&lt;/h2&gt;

&lt;p&gt;One of the cutting and very new technology. By using Agents we can allow the model to use external tools for some specific task.&lt;/p&gt;

&lt;p&gt;Agents can use any custom tool defined by the user, API, web search etc.&lt;/p&gt;

&lt;p&gt;I hope this article gives some information on the Langchain framework.&lt;/p&gt;

&lt;p&gt;In my next &lt;a href="https://vijendrarana.blog/"&gt;article&lt;/a&gt;, will implement and develop some LLM apps.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>llm</category>
    </item>
    <item>
      <title>Math for AI and ML: The Reasons Behind It</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Sun, 11 Jun 2023 07:17:08 +0000</pubDate>
      <link>https://dev.to/vijendra/math-for-ai-and-ml-the-reasons-behind-it-477i</link>
      <guid>https://dev.to/vijendra/math-for-ai-and-ml-the-reasons-behind-it-477i</guid>
      <description>&lt;p&gt;Artificial Intelligence (AI) and Machine Learning (ML) have become buzzwords in recent years. They are revolutionizing the world as we know it, changing the way we live, work, and interact with each other and with technology. Behind these powerful technologies lies a foundation of mathematics that is essential to their development and implementation. In this blog post, we will explore the reasons why math plays such a crucial role in AI and ML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Importance of Linear Algebra&lt;/strong&gt;&lt;br&gt;
Linear algebra is a branch of mathematics that deals with linear equations, matrices, and vector spaces. It forms the backbone of many algorithms used in AI and ML, such as principal component analysis, linear regression, and deep learning. Linear algebra is essential for understanding how to manipulate data and how to build models that can make predictions based on that data. Without a solid grasp of linear algebra, it is impossible to develop and implement effective AI and ML algorithms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Significance of Calculus&lt;/strong&gt;&lt;br&gt;
Calculus is another branch of mathematics that is crucial to AI and ML. It deals with the study of rates of change and how things vary over time. In AI and ML, calculus is used to optimize algorithms and to find the best solutions to complex problems. It is also used to understand the behavior of neural networks, which are a fundamental component of many AI and ML systems. A strong understanding of calculus allows developers to create more sophisticated and accurate models and to make better predictions based on data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Relevance of Probability and Statistics&lt;/strong&gt;&lt;br&gt;
Probability and statistics are also essential to AI and ML. They provide tools for understanding uncertainty and for quantifying the likelihood of events occurring. Probability and statistics are used to build models that can predict outcomes with a certain degree of accuracy. They are also used to identify patterns in data and to understand the underlying structure of complex systems. Without a strong foundation in probability and statistics, it is impossible to develop AI and ML models that are reliable and accurate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
In conclusion, math is a critical component of AI and ML. It provides the tools and techniques necessary to build sophisticated algorithms and models that can make accurate predictions based on data.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>stats</category>
    </item>
    <item>
      <title>Tech Stack- How to make tech choice for Web apps?</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Sat, 20 May 2023 07:41:45 +0000</pubDate>
      <link>https://dev.to/vijendra/tech-stack-how-to-make-tech-choice-for-web-apps-2ik9</link>
      <guid>https://dev.to/vijendra/tech-stack-how-to-make-tech-choice-for-web-apps-2ik9</guid>
      <description>&lt;p&gt;Choosing the right tech stack for web development is crucial for the success of any project. A tech stack is a combination of programming languages, frameworks, and tools used to create web applications. In this blog post, we will discuss the importance of selecting the right tech stack and how it can impact your web development project.&lt;/p&gt;

&lt;p&gt;The below Diagram shows different components involved in web development and each component can be implemented by different technologies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e9CSqj7F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mjmnltivfgbawobnnxsb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e9CSqj7F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mjmnltivfgbawobnnxsb.png" alt="Image description" width="800" height="572"&gt;&lt;/a&gt;&lt;br&gt;
To make a better tech choice, we have to know the underlying architecture of tech and based on architecture, we can match the use case of the application.&lt;br&gt;
For example-&lt;/p&gt;

&lt;p&gt;To Serve static content and dynamic content.&lt;/p&gt;

&lt;p&gt;-Static Content- (a) Apache Web Server (b)Nginx Web Server (c) Cloud Storage&lt;/p&gt;

&lt;p&gt;-Dynamic Content - (a) Web Server -&amp;gt; Apache HTTPD, Node JS (b)Java Web container- Tomcat, Jetty, Spring-boot.&lt;/p&gt;

&lt;p&gt;-Content Caching- Nginx&lt;/p&gt;

&lt;p&gt;-Content Distribution- CDN.&lt;/p&gt;

&lt;p&gt;To make a good decision first We can check the architecture of the tech choice.&lt;br&gt;
Ex. Nginx Web Server&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;can store static content&lt;/li&gt;
&lt;li&gt;Generate dynamic content&lt;/li&gt;
&lt;li&gt;Act as Reverse proxy( Excellent )&lt;/li&gt;
&lt;li&gt;Cache content -(Good)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compatibility and Scalability&lt;br&gt;
One of the most important factors to consider when choosing a tech stack is compatibility and scalability. A tech stack that is compatible with your project's requirements will ensure that your web application runs smoothly and efficiently. Scalability is also important as your web application grows and more users access it. Choosing a tech stack that can easily scale and handle large amounts of traffic is essential to the success of your web application.&lt;/p&gt;

&lt;p&gt;Development Time and Cost&lt;br&gt;
Another factor to consider when choosing a tech stack is development time and cost. Some tech stacks require less time and effort to develop, while others are more complex and require more expertise. It's important to choose a tech stack that aligns with your development team's skillset and experience. Choosing a tech stack that requires less development time and cost can also help you save money and launch your web application faster.&lt;/p&gt;

&lt;p&gt;User Experience and Functionality&lt;br&gt;
The user experience and functionality of your web application are also important factors to consider when choosing a tech stack. Some tech stacks offer better functionality and user experience than others. It's important to choose a tech stack that aligns with your project's goals and user needs. A tech stack that offers better functionality and user experience can help you attract and retain more users, which is essential for the success of your web application.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Choosing the right tech stack for web development is crucial for the success of any project. Compatibility and scalability, development time and cost, and user experience and functionality are important factors to consider when selecting a tech stack. By considering these factors, you can choose a tech stack that aligns with your project's goals and requirements and ensures the success of your web application.&lt;/p&gt;

&lt;p&gt;And check the next &lt;a href="https://vijendrarana.blog/"&gt;articles &lt;/a&gt;on tech stack, how can we implement each component?&lt;/p&gt;

</description>
      <category>web</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Prompt engineering - Instruction based LLM</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Sun, 07 May 2023 13:22:16 +0000</pubDate>
      <link>https://dev.to/vijendra/prompt-engineering-instruction-based-llm-2bdp</link>
      <guid>https://dev.to/vijendra/prompt-engineering-instruction-based-llm-2bdp</guid>
      <description>&lt;p&gt;Prompt engineering is a technique used to fine-tune and customize language models such as OpenAI's GPT-3 for specific tasks. This technique involves crafting prompts or inputs that guide the model toward generating more relevant and accurate outputs. In this blog post, we will explore how prompt engineering can be used to enhance the performance of GPT-3 for various NLP tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt engineering principle&lt;/strong&gt;:&lt;br&gt;
1.Practice writing clear and specific instructions&lt;br&gt;
2.Give the modal some time to think&lt;br&gt;
Best prompt engineering can be achieved by an iterative process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ei9DhXZX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kr9ujx72ee3fcg1ydkdt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ei9DhXZX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kr9ujx72ee3fcg1ydkdt.png" alt="Image description" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guideline&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Be clear and specific&lt;/li&gt;
&lt;li&gt;Analyze why the result does not give the desired output&lt;/li&gt;
&lt;li&gt;Refine the idea and prompt&lt;/li&gt;
&lt;li&gt;Repeat
To achieve the best result always refine the prompt with a batch of examples.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Use cases for Prompt engineering:&lt;/strong&gt;&lt;br&gt;
1.Summarizing text - For example, summarize meetings or summarize customer reviews on products.&lt;/p&gt;

&lt;p&gt;2.Inferring - For example, extract the sentiment of the text. (Like Positive or negative reviews )&lt;/p&gt;

&lt;p&gt;3.Transforming - For example - Take inputs in one language and transfer them to another language.&lt;/p&gt;

&lt;p&gt;4.Spelling fix&lt;/p&gt;

&lt;p&gt;5.Check review&lt;/p&gt;

&lt;p&gt;6.Expand a sorter text to longer text&lt;/p&gt;

&lt;p&gt;7.Chatbot -(Any chatbot like Tiffin service order chatbot)&lt;/p&gt;

&lt;p&gt;And many more...&lt;/p&gt;

&lt;p&gt;I hope this article will give some ideas of prompt engineering . In next article, How can we implement using python , open AI modal(3.5 turbo) , next Js, React ?&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>prompteng</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Authentication for apps -&gt; How can utilize next-auth for authentication?</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Mon, 01 May 2023 13:38:08 +0000</pubDate>
      <link>https://dev.to/vijendra/authentication-for-apps-how-can-utilize-next-auth-for-authentication-2jfo</link>
      <guid>https://dev.to/vijendra/authentication-for-apps-how-can-utilize-next-auth-for-authentication-2jfo</guid>
      <description>&lt;p&gt;Log in using GitHub: &lt;a href="https://poc-next-auth.netlify.app/"&gt;https://poc-next-auth.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Authentication and Authorization is an integral processes to keep the application secure. Without proper authentication measures in place, unauthorized users could gain access to sensitive information or perform actions that could harm the application or its users.&lt;/p&gt;

&lt;p&gt;Authentication can be done using the User's Google account or GitHub Apple etc.&lt;/p&gt;

&lt;p&gt;How can we implement such an authentication process?&lt;br&gt;
There are several ways to implement but today we can check how we can utilize the next-auth library for GitHub authentication and it can be extended to any other authentication (google, apple, Reddit etc).&lt;/p&gt;

&lt;p&gt;Steps for GitHub authentication :&lt;br&gt;
1.First, get Github Client ID and secret Id by creating a new OAuth app from (Setting -&amp;gt;Developer setting -&amp;gt; New OAuth app-&amp;gt; provide URL and callback URLs) then generate the client Id.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ybfa5UAZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lothuzo48phw977whnof.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ybfa5UAZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lothuzo48phw977whnof.png" alt="Image description" width="800" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.Keep the Client ID and secret ID in the env file (.env file)&lt;/p&gt;
&lt;h1&gt;
  
  
  Authentication (NextAuth.js)
&lt;/h1&gt;

&lt;p&gt;NEXTAUTH_URL=localhost:3000&lt;/p&gt;

&lt;p&gt;NEXTAUTH_SECRET=&lt;/p&gt;

&lt;p&gt;GITHUB_CLIENT_ID=&lt;/p&gt;

&lt;p&gt;GITHUB_CLIENT_SECRET=&lt;/p&gt;

&lt;p&gt;GITHUB_ACCESS_TOKEN=&lt;br&gt;
3.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; // Keep  this Option in any folder(lib-&amp;gt;auth.js)
   import GithubProvider from "next-auth/providers/github"

   export const authOptions = {
     // Configure one or more authentication providers
     providers: [
       GithubProvider({
         clientId: process.env.NEXT_GITHUB_CLIENT_ID,
         clientSecret: process.env.NEXT_GITHUB_CLIENT_SECRET,
       }),
       // ...add more providers here
     ],
     secret:process.env.NEXT_JWT_SECRET
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.create a folder under (src-&amp;gt;pages-&amp;gt;auth-&amp;gt;[...nextauth].js file and add these lines of codes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import NextAuth from "next-auth"

import { authOptions } from "@/lib/auth"

// @see ./lib/auth
export default NextAuth(authOptions)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5.Then import sign/signout/ from next-auth/react and call on the login and signout button.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; import { signIn } from "next-auth/react"
   &amp;lt;button
             type="button"
              className="bg-white border border-slate-200 hover:bg-white-100 dark:border-slate-700 dark:text-slate-100 p-10 rounded"
              onClick={() =&amp;gt; {
                signIn();
              }}
            &amp;gt;
              Login With GitHub
            &amp;lt;/button&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With all these changes we will be able to GitHub log in.&lt;/p&gt;

&lt;p&gt;DEMO URL: &lt;a href="https://poc-next-auth.netlify.app/"&gt;https://poc-next-auth.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CODE: &lt;a href="https://github.com/Vijendra-Tech/poc_next_auth"&gt;https://github.com/Vijendra-Tech/poc_next_auth&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy Coding :)&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>POC#1-Build online code editor using react+vite, tailwindcss,judge0</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Mon, 24 Apr 2023 09:08:52 +0000</pubDate>
      <link>https://dev.to/vijendra/poc1-build-online-code-editor-using-reactvite-tailwindcssjudge0-2857</link>
      <guid>https://dev.to/vijendra/poc1-build-online-code-editor-using-reactvite-tailwindcssjudge0-2857</guid>
      <description>&lt;p&gt;Today I will write about how can we build an online code editor using React.&lt;/p&gt;

&lt;p&gt;I am using React +Vite to create UI and tailwind CSS for styling.&lt;/p&gt;

&lt;p&gt;Libraries are used codemirror and react-codemirror for code input in the browser.&lt;/p&gt;

&lt;p&gt;To compile and execute codes: Juggeo APIs are used.&lt;/p&gt;

&lt;p&gt;Judge0 APIs can be found in the Rapid API hub. First, need to register and get the API key and place in the .env file.&lt;/p&gt;

&lt;p&gt;Replace with your API key and host details.&lt;/p&gt;

&lt;p&gt;Here is Demo UI and Can check the live demo &lt;a href="https://main--radiant-clafoutis-96457f.netlify.app/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ltorMlF---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2asl8ocds9tkk969ei0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ltorMlF---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2asl8ocds9tkk969ei0x.png" alt="Image description" width="800" height="361"&gt;&lt;/a&gt;&lt;br&gt;
You can find entire codes on &lt;a href="https://github.com/Vijendra-Tech/poc_code-mirror"&gt;GitHub&lt;/a&gt;. You can modify and add more use cases.&lt;/p&gt;

&lt;p&gt;Happy Coding :)&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>[Cont...] System design of chat system-part2</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Fri, 21 Apr 2023 11:28:14 +0000</pubDate>
      <link>https://dev.to/vijendra/cont-system-design-of-chat-system-part2-28ff</link>
      <guid>https://dev.to/vijendra/cont-system-design-of-chat-system-part2-28ff</guid>
      <description>&lt;p&gt;From &lt;a href="https://dev.to/vijendra/system-design-for-chat-system-1mhm"&gt;part-1&lt;/a&gt; on we decided to choose a WebSocket network protocol for communication to simulate server-initiated connection. WebSocket connection initiated by Client. It is bidirectional and persistent. Though it is a persistent connection, a server could send updates to a client.WebSocket generally works even if a firewall is in place. This is because of the same port 80 or 443 used by HTTP/HTTPS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4SRMxLI---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9uph9i1dcg1sewzerj2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4SRMxLI---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9uph9i1dcg1sewzerj2d.png" alt="Image description" width="770" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;High-Level Design-&lt;/p&gt;

&lt;p&gt;As we decided to use websocket for a chat so for other features we can use the traditional request/response method of HTTP(Rest API).&lt;/p&gt;

&lt;p&gt;So Now the chat system is divided into three parts:- Stateless service, stateful service and third-party.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LSSR5bb8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kmx5ld20znmonndq5dow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LSSR5bb8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kmx5ld20znmonndq5dow.png" alt="Image description" width="800" height="731"&gt;&lt;/a&gt;&lt;br&gt;
Stateless Service-&amp;gt; Manage user sign-up. login, user profile etc.&lt;/p&gt;

&lt;p&gt;Stateful Service-&amp;gt;Manage chat communication among users.&lt;/p&gt;

&lt;p&gt;Third-party- Push Notification when the user is offline.&lt;/p&gt;

&lt;p&gt;DataStore:&lt;/p&gt;

&lt;p&gt;To Make a database choice - we have 2 types -SQL and No-SQL DB&lt;br&gt;
RDMS for Stateless service for User Management. It can be scaled by using replication and Sharding technique.&lt;/p&gt;

&lt;p&gt;But to maintain chat history data. Need to understand read/write the pattern.&lt;/p&gt;

&lt;p&gt;Chat history has enormous data and users mostly check recent chats. But in some cases, users might want to search with a particular keyword and the chat system can navigate to a specific message.&lt;/p&gt;

&lt;p&gt;So r/w = 1:1 in one -one chat&lt;/p&gt;

&lt;p&gt;Random excess is expensive in RBMS.So we choose key-value stores to store messages. Facebook and Discord choose key-value stores for messages. Facebook is using HBase and Discord was using Cassandra but recently modified the architecture of Discord.&lt;/p&gt;

&lt;p&gt;Key-value stores can easily be scaled horizontally and have low latency.&lt;/p&gt;

&lt;p&gt;So high-level design with services and data store is&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tpwf5hjX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zaybzjqmj1lrs8pokdwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tpwf5hjX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zaybzjqmj1lrs8pokdwz.png" alt="Image description" width="800" height="783"&gt;&lt;/a&gt;&lt;br&gt;
Next, we will see the data modal design for the chat system, online status and group messaging design.&lt;/p&gt;

&lt;p&gt;Check my &lt;a href="https://vijendrarana.blog"&gt;blogs&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>designsystem</category>
      <category>webdev</category>
    </item>
    <item>
      <title>System Design for chat system</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Thu, 20 Apr 2023 14:26:16 +0000</pubDate>
      <link>https://dev.to/vijendra/system-design-for-chat-system-1mhm</link>
      <guid>https://dev.to/vijendra/system-design-for-chat-system-1mhm</guid>
      <description>&lt;p&gt;The system design process has the following pattern:&lt;/p&gt;

&lt;p&gt;Gather Requirement&lt;/p&gt;

&lt;p&gt;Capacity measurement&lt;/p&gt;

&lt;p&gt;Propose High-level design&lt;/p&gt;

&lt;p&gt;High-level Design&lt;/p&gt;

&lt;p&gt;a.Technology selection&lt;/p&gt;

&lt;p&gt;b.Service selection&lt;/p&gt;

&lt;p&gt;c.Think of scalability&lt;/p&gt;

&lt;p&gt;d.Storage selection&lt;/p&gt;

&lt;p&gt;API Design&lt;/p&gt;

&lt;p&gt;Data Modal&lt;/p&gt;

&lt;p&gt;Requirements:&lt;/p&gt;

&lt;p&gt;1) Kind of chat -&amp;gt; 1-1 chat and group chat&lt;/p&gt;

&lt;p&gt;2)Should support 70 million daily active users&lt;/p&gt;

&lt;p&gt;3)Group of max 200 peoples&lt;/p&gt;

&lt;p&gt;4)System should allow only text messages&lt;/p&gt;

&lt;p&gt;5)Maximum 5000 chars&lt;/p&gt;

&lt;p&gt;6)History should available forever.&lt;/p&gt;

&lt;p&gt;Propose a very high-level design and buy-in&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p-8jHrlw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mc08o5j1n1dyhtc1i8nk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p-8jHrlw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mc08o5j1n1dyhtc1i8nk.png" alt="Image description" width="800" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a chat system, client needs to connect chat service using one or more network protocols and choice of network is important.&lt;/p&gt;

&lt;p&gt;HTTP Protocol communication is very common. Client can initiate HTTP connection by providing a keep-alive header to keep the connection persistent. Initially, Many company started http protocol but it is not reliable.&lt;/p&gt;

&lt;p&gt;Since the Http connection is initiated by the client end so from receiver side it is very difficult and it is not trivial to send message from the server. Server-initiated connection are used to persistent connection and easy to send and receive message.&lt;/p&gt;

&lt;p&gt;There are few technique- Polling, long polling , and Websocket.&lt;/p&gt;

&lt;p&gt;Websocket is the most common solution for sending asynchronous updates from server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OD1F_1XN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u2h8enezq4qg2ixa7rdw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OD1F_1XN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u2h8enezq4qg2ixa7rdw.png" alt="Image description" width="551" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next will post on Service and Storage selection.......&lt;/p&gt;

</description>
      <category>designsystem</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How Docker is helping developer and Dev Ops team??</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Sat, 15 Apr 2023 12:05:35 +0000</pubDate>
      <link>https://dev.to/vijendra/how-docker-is-helping-developer-and-dev-ops-team-m4n</link>
      <guid>https://dev.to/vijendra/how-docker-is-helping-developer-and-dev-ops-team-m4n</guid>
      <description>&lt;p&gt;As we all are aware that many many tech companies adopted containerization bases applications because of their growing demand. But what problems are solved by using docker?&lt;/p&gt;

&lt;p&gt;For Developer- What is the developer's main task in the job- writing codes?&lt;/p&gt;

&lt;p&gt;But Developer has to do all the setup work before writing codes and for different environments different sets up, version issues etc.&lt;/p&gt;

&lt;p&gt;What if I don't have to do set up and do only coding?&lt;/p&gt;

&lt;p&gt;Here are some problems solved by docker-&lt;/p&gt;

&lt;p&gt;Portability: Docker containers are portable and can run consistently across different environments, from development to production, without changes or configuration. This allows developers to easily move their applications between different systems, reducing the risk of environment-related issues.&lt;/p&gt;

&lt;p&gt;Dependencies: Docker allows developers to package an application and its dependencies into a single unit called a container. This ensures that all the required dependencies, libraries, and configurations are included in the container, which eliminates the "works on my machine" problem and makes it easy to share and deploy applications.&lt;/p&gt;

&lt;p&gt;Consistency: Docker provides a consistent runtime environment for applications, regardless of the underlying infrastructure. This reduces the risk of compatibility issues and ensures that applications behave predictably across different environments.&lt;/p&gt;

&lt;p&gt;Scalability: Docker makes it easy to scale applications horizontally by adding or removing containers as needed. This allows developers to quickly respond to changes in demand and ensures that the application can handle increased traffic without downtime or performance issues.&lt;/p&gt;

&lt;p&gt;Speed: Docker can significantly reduce the time it takes to set up and configure development, testing, and production environments. This enables developers to focus on writing code and delivering features rather than dealing with infrastructure-related tasks.&lt;/p&gt;

&lt;p&gt;And the problems that the Operation team faces are:&lt;/p&gt;

&lt;p&gt;Environment inconsistencies: Applications often behaved differently in different environments due to differences in the underlying infrastructure, which made it difficult to replicate issues and deploy applications reliably.&lt;/p&gt;

&lt;p&gt;Resource utilization: Applications often required dedicated infrastructure, which resulted in underutilized resources and higher infrastructure costs.&lt;/p&gt;

&lt;p&gt;Complex deployments: Deploying applications often required manual configuration and scripting, which was time-consuming and error-prone.&lt;/p&gt;

&lt;p&gt;Limited scalability: Scaling applications vertically by adding more resources to a single server was often complex and expensive, and scaling horizontally by adding more servers required complex load balancing and networking configurations.&lt;/p&gt;

&lt;p&gt;Dependency management: Managing dependencies between applications and different versions of libraries and software were often difficult and error-prone, leading to compatibility issues and application fail&lt;/p&gt;

&lt;p&gt;To address all these issues many companies started using a containerization-based approach.&lt;/p&gt;

&lt;p&gt;Terms that are always used with Docker are:&lt;/p&gt;

&lt;p&gt;a.Container b.Images&lt;/p&gt;

&lt;p&gt;What is an Image in Docker?&lt;/p&gt;

&lt;p&gt;An image is a template that defines the contents and configuration of a container. An image is a read-only file that includes everything needed to run an application, such as code, runtime, system tools, libraries, and settings.&lt;/p&gt;

&lt;p&gt;What is a container?&lt;/p&gt;

&lt;p&gt;A container is a lightweight, standalone executable package that includes everything needed to run an application, such as code, runtime, system tools, libraries, and settings. A container is an instance of a Docker image that runs as a process in isolation from the host system and other containers.&lt;/p&gt;

&lt;p&gt;Then what is different between Container and Virtual Machine?&lt;/p&gt;

&lt;p&gt;To Know the difference first have to know the general OS Structure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QgZ4JgE---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r2zp8u3tk6vwrxkua4lr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QgZ4JgE---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r2zp8u3tk6vwrxkua4lr.png" alt="Image description" width="521" height="441"&gt;&lt;/a&gt;&lt;br&gt;
Every OS(Operating systems like Windows, macOS, or Linux) has three layers.&lt;/p&gt;

&lt;p&gt;The kernel layer serves as the operating system's core, handling hardware allocation, memory management, and file systems for the application layer.&lt;/p&gt;

&lt;p&gt;Docker solely virtualizes the application layer, while Virtual Machines virtualize both the OS and Kernel layers.&lt;/p&gt;

&lt;p&gt;That is the reason has compatibility problem but docker has given solution for this(Docker Desktop).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mFFY3hbE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/at0evjiikd07pztk51e4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mFFY3hbE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/at0evjiikd07pztk51e4.png" alt="Image description" width="372" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5datntuP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oj7c5iw1xyvnixtfdgpk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5datntuP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oj7c5iw1xyvnixtfdgpk.png" alt="Image description" width="347" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In summary, Docker containers offer a versatile and effective method for packaging and deploying applications, ensuring consistent and isolated runtime environments that operate seamlessly across various systems and infrastructures.&lt;/p&gt;

&lt;p&gt;How to Set Up Docker, Create a Docker Image, and Run It?&lt;/p&gt;

&lt;p&gt;So Overall workflow looks like in docker?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yWtJZNCj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rv3qix3ql5a78tfoo3vp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yWtJZNCj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rv3qix3ql5a78tfoo3vp.png" alt="Image description" width="545" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Be sure to check out my upcoming blog post!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>devops</category>
    </item>
    <item>
      <title>How to do in-memory Caching using ReactJS</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Thu, 13 Apr 2023 13:12:59 +0000</pubDate>
      <link>https://dev.to/vijendra/how-to-do-in-memory-caching-using-reactjs-3p55</link>
      <guid>https://dev.to/vijendra/how-to-do-in-memory-caching-using-reactjs-3p55</guid>
      <description>&lt;p&gt;In some cases where we don't require to call multiple API calls for the same result.&lt;/p&gt;

&lt;p&gt;Using a Map object can be more efficient than using a plain object as a cache, especially when dealing with a large amount of data, as Map objects are optimized for handling key-value pairs. Additionally, using a hash map allows for faster lookup times than using an array or other data structures for caching.&lt;/p&gt;

&lt;p&gt;In a real-world application, you may want to implement more advanced caching strategies or use a dedicated caching solution like Redis or Memcached.&lt;/p&gt;

&lt;p&gt;But for the simple use case, we can use the in-memory cache mechanism.&lt;/p&gt;

&lt;p&gt;Here is example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//using cahed object
import React, { useEffect, useState } from 'react';

const cache = {};

function App() {
  const [data, setData] = useState(null);

  useEffect(() =&amp;gt; {
    const fetchData = async () =&amp;gt; {
      const response = await fetch('https://example.com/api/data');
      const jsonData = await response.json();
      setData(jsonData);
    };

    // Check if the data is in the cache
    if (cache['cachedData']) {
      setData(cache['cachedData']);
    } else {
      fetchData();
    }
  }, []);

  useEffect(() =&amp;gt; {
    // Store the data in the cache
    cache['cachedData'] = data;
  }, [data]);

  return (
    &amp;lt;div&amp;gt;
      {data ? (
        &amp;lt;ul&amp;gt;
          {data.map(item =&amp;gt; (
            &amp;lt;li key={item.id}&amp;gt;{item.name}&amp;lt;/li&amp;gt;
          ))}
        &amp;lt;/ul&amp;gt;
      ) : (
        &amp;lt;p&amp;gt;Loading...&amp;lt;/p&amp;gt;
      )}
    &amp;lt;/div&amp;gt;
  );
}

export default App;
//using Map
import React, { useEffect, useState } from 'react';

const cache = new Map();

function App() {
  const [data, setData] = useState(null);

  useEffect(() =&amp;gt; {
    const fetchData = async () =&amp;gt; {
      const response = await fetch('https://example.com/api/data');
      const jsonData = await response.json();
      setData(jsonData);
    };

    // Check if the data is in the cache
    if (cache.has('cachedData')) {
      setData(cache.get('cachedData'));
    } else {
      fetchData();
    }
  }, []);

  useEffect(() =&amp;gt; {
    // Store the data in the cache
    cache.set('cachedData', data);
  }, [data]);

  return (
    &amp;lt;div&amp;gt;
      {data ? (
        &amp;lt;ul&amp;gt;
          {data.map(item =&amp;gt; (
            &amp;lt;li key={item.id}&amp;gt;{item.name}&amp;lt;/li&amp;gt;
          ))}
        &amp;lt;/ul&amp;gt;
      ) : (
        &amp;lt;p&amp;gt;Loading...&amp;lt;/p&amp;gt;
      )}
    &amp;lt;/div&amp;gt;
  );
}

export default App;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>react</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Quantum Computing in simple words</title>
      <dc:creator>Vijendra-Tech</dc:creator>
      <pubDate>Sun, 09 Apr 2023 10:17:44 +0000</pubDate>
      <link>https://dev.to/vijendra/quantum-computing-in-simple-words-513g</link>
      <guid>https://dev.to/vijendra/quantum-computing-in-simple-words-513g</guid>
      <description>&lt;p&gt;The Computer was invented to solve computing problems. Traditional computer or classical computer was developed based on classical physics concept. Traditional computers use binary digits (bits) that can be either 0 or 1 to represent information. But some problems can not be solved by classical computers or it will take a week or month or years to solve.&lt;/p&gt;

&lt;p&gt;For Example maze problem&lt;/p&gt;

&lt;p&gt;The time taken by a classical computer to solve a maze problem depends on the size and complexity of the maze. For small and simple mazes, a classical computer can solve the problem quickly, typically in a matter of milliseconds or seconds.&lt;/p&gt;

&lt;p&gt;However, as the size and complexity of the maze increase, the time taken by a classical computer to solve the problem can increase exponentially, and it may take hours, days, or even longer to find a solution.&lt;/p&gt;

&lt;p&gt;But to simulate one nature behavior like chemical simulation, will take years or can not be solved by using traditional computers. To solve very complex kinds of problems, the Quantum computer comes into the picture.&lt;/p&gt;

&lt;p&gt;Quantum computers use quantum bits, or qubits, which can be both 0 and 1 at the same time. This allows quantum computers to perform many calculations simultaneously and solve certain problems that classical computers would take a very long time to solve, or even be unable to solve at all.&lt;/p&gt;

&lt;p&gt;It can have many states of 0 and 1 like the states of the rolling coin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3eeknjZp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cjccpmmrtii3xhwkm17q.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3eeknjZp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cjccpmmrtii3xhwkm17q.PNG" alt="Image description" width="800" height="531"&gt;&lt;/a&gt;&lt;br&gt;
Use cases where Quantum Computers can be used&lt;/p&gt;

&lt;p&gt;1.Chemical Simulation&lt;/p&gt;

&lt;p&gt;2.Health sector :&lt;/p&gt;

&lt;p&gt;Drug discovery: Quantum computing can accelerate the process of drug discovery by simulating the behavior of molecules at the quantum level. This can help identify new drug candidates and optimize existing ones much faster than classical computers.&lt;/p&gt;

&lt;p&gt;Medical imaging: Quantum computing can improve the accuracy of medical imaging by optimizing the processing of large data sets and reducing the time required for analysis. This can lead to faster and more accurate diagnoses of diseases such as cancer.&lt;/p&gt;

&lt;p&gt;Genomics: Quantum computing can help analyze large genomic data sets to identify genetic mutations and develop personalized treatments for patients. This can lead to more effective treatments and better outcomes for patients with genetic diseases.&lt;/p&gt;

&lt;p&gt;Health data analysis: Quantum computing can help analyze large and complex health data sets, such as electronic health records, to identify patterns and correlations that may be missed by classical computers. This can lead to more accurate diagnoses, better treatments, and improved health outcomes for patients.&lt;/p&gt;

&lt;p&gt;And there are many more.&lt;/p&gt;

&lt;p&gt;Quantum computer will not going to replace traditional computer and will be available through cloud service as it is a very complex machine. Quantum computer is next big thing gonna happen and the winner will rule. That is the reason many companies are betting billions of dollars in quantum computer. This is the area where many products can be build.&lt;/p&gt;

&lt;p&gt;Links to know more.&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Quantum_computing"&gt;https://en.wikipedia.org/wiki/Quantum_computing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>quantum</category>
    </item>
  </channel>
</rss>
