{"id":4904,"date":"2024-07-25T21:01:07","date_gmt":"2024-07-25T15:31:07","guid":{"rendered":"https:\/\/namastedev.com\/blog\/asynchronous-programming-in-javascript-homework-given-in-ep-03-season-2\/"},"modified":"2024-07-25T21:01:08","modified_gmt":"2024-07-25T15:31:08","slug":"asynchronous-programming-in-javascript-homework-given-in-ep-03-season-2","status":"publish","type":"post","link":"https:\/\/namastedev.com\/blog\/asynchronous-programming-in-javascript-homework-given-in-ep-03-season-2\/","title":{"rendered":"Asynchronous Programming in JavaScript &#8211; Homework given in Ep-03 Season 2"},"content":{"rendered":"<div>\n<div>const cart = [&#8220;shoes&#8221;, &#8220;pant&#8221;, &#8220;kurta&#8221;];<\/div>\n<div>const orderId = &#8220;12345&#8221;;<\/div>\n<div>const accountId = &#8220;someId001&#8221;;<\/div>\n<div>let walletBalance = &#8220;1000&#8221;;<\/div>\n<div>function createOrder(orderId) {<\/div>\n<div>\u00a0returnnewPromise((resolve, reject) =&gt; {<\/div>\n<div>\u00a0setTimeout(() =&gt; {<\/div>\n<div>\u00a0console.log(`OrderId : ${orderId} Created`);<\/div>\n<div>\u00a0resolve(orderId);<\/div>\n<div>\u00a0}, 5000);<\/div>\n<div>\u00a0});<\/div>\n<div>}<\/div>\n<div>function proceedToPayment(orderId) {<\/div>\n<div>\u00a0returnnewPromise((resolve, reject) =&gt; {<\/div>\n<div>\u00a0setTimeout(() =&gt; {<\/div>\n<div>\u00a0console.log(`Payment processed for Order Id: ${orderId}`);<\/div>\n<div>\u00a0resolve(orderId);<\/div>\n<div>}, 1000);<\/div>\n<div>});<\/div>\n<div>}<\/p>\n<\/div>\n<div>function showOrderSummary(orderId) {<\/div>\n<div>\u00a0returnnewPromise((resolve) =&gt; {<\/div>\n<div>\u00a0console.log(`order summary for ${orderId} is ${cart.join(&#8220;, &#8220;)}`);<\/div>\n<div>\u00a0resolve(orderId);<\/div>\n<div>\u00a0});<\/div>\n<div>}<\/p>\n<\/div>\n<div>function updateWallet(userAccountId) {<\/div>\n<div>\u00a0returnnewPromise((resolve) =&gt; {<\/div>\n<div>\u00a0constcost=800; \/\/ just assume that the total cost is 800rs<\/div>\n<div>\u00a0walletBalance-=cost;<\/div>\n<div>\u00a0console.log(`total amount left in the wallet is : ${walletBalance} rs`);<\/div>\n<div>\u00a0resolve(walletBalance);<\/div>\n<div>\u00a0});<\/div>\n<div>}<\/p>\n<\/div>\n<div>createOrder(orderId)<\/div>\n<div>.then((orderId) =&gt; proceedToPayment(orderId))<\/div>\n<div>.then((orderId) =&gt; showOrderSummary(orderId))<\/div>\n<div>.then(() =&gt; updateWallet(accountId))<\/div>\n<div>.catch((err) =&gt; {<\/div>\n<div>console.log(err.message);<\/div>\n<div>});<\/div>\n<div>Here is one humble attempt to make the promise chaining in working.<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>const cart = [&#8220;shoes&#8221;, &#8220;pant&#8221;, &#8220;kurta&#8221;]; const orderId = &#8220;12345&#8221;; const accountId = &#8220;someId001&#8221;; let walletBalance = &#8220;1000&#8221;; function createOrder(orderId) { \u00a0returnnewPromise((resolve, reject) =&gt; { \u00a0setTimeout(() =&gt; { \u00a0console.log(`OrderId : ${orderId} Created`); \u00a0resolve(orderId); \u00a0}, 5000); \u00a0}); } function proceedToPayment(orderId) { \u00a0returnnewPromise((resolve, reject) =&gt; { \u00a0setTimeout(() =&gt; { \u00a0console.log(`Payment processed for Order Id: ${orderId}`); \u00a0resolve(orderId); },<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[230,172],"tags":[330],"class_list":["post-4904","post","type-post","status-publish","format-standard","category-chosen-topic","category-javascript","tag-javascript"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/4904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/comments?post=4904"}],"version-history":[{"count":1,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/4904\/revisions"}],"predecessor-version":[{"id":4908,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/4904\/revisions\/4908"}],"wp:attachment":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/media?parent=4904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/categories?post=4904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/tags?post=4904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}