{"id":61010,"date":"2023-10-04T03:01:16","date_gmt":"2023-10-03T17:01:16","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=61010"},"modified":"2023-10-03T19:49:20","modified_gmt":"2023-10-03T09:49:20","slug":"javascript-lazy-evaluation-follow-up-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/javascript-lazy-evaluation-follow-up-tutorial\/","title":{"rendered":"Javascript Lazy Evaluation Follow Up Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/lazy_async.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Javascript Lazy Evaluation Follow Up Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/lazy_async.gif\" title=\"Javascript Lazy Evaluation Follow Up Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Javascript Lazy Evaluation Follow Up Tutorial<\/p><\/div>\n<p>Further to yesterday&#8217;s <a title='Javascript Lazy Evaluation Primer Tutorial' href='#jlept'>Javascript Lazy Evaluation Primer Tutorial<\/a>&#8216;s subject matter regarding Lazy Evaluations and Javascript <a target=_blank title='Javascript async function information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Statements\/async_function'>async<\/a> functions, we&#8217;ve stumbled upon <a target=_blank title='Great website, thanks' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Statements\/async_function'>another great resource<\/a>, thanks, from which we can base, to develop a web application, we&#8217;re hoping.<\/p>\n<p>Within this <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/lazy_async.html_GETME\" title=\"lazy_async.html\">&#8220;proof of concept&#8221; code basis<\/a> you will find setTimeout (timer) references to <a target=_blank title='Javascript Lazy Evaluation information' href='https:\/\/javascript.plainenglish.io\/javascript-lazy-evaluation-iterables-iterators-e0770a5de96f'>Lazy Evaluations<\/a> like &#8230;<\/p>\n<p><code><br \/>\n    setTimeout(() => {<br \/>\n      aminterested='Just';<br \/>\n      resolve(\"fast\");<br \/>\n      consolelog(\"fast promise is done\");<br \/>\n      aminterested='';<br \/>\n    }, 1000);<br \/>\n<\/code><\/p>\n<p> &#8230; as a function that &#8230;<\/p>\n<ul>\n<li>attempts to start in one second&#8217;s time &#8230;<\/li>\n<li>as needed that function is performed<\/li>\n<\/ul>\n<p>The possibilities here are multifaceted, and varied, and definitely worth experimenting with, within Javascript client work.<\/p>\n<p>So our starting web application can be tried <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/lazy_async.html\">in a new tab<\/a> or below &#8230;<\/p>\n<p><iframe style=\"width:100%;height:900px;\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/lazy_async.html\"><\/iframe><\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/javascript-lazy-evaluation-follow-up-tutorial\/'>Javascript Lazy Evaluation Follow Up Tutorial<\/a>.<\/p-->\n<hr>\n<p id='jlept'>Previous relevant <a target=_blank title='Javascript Lazy Evaluation Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/javascript-lazy-evaluation-primer-tutorial\/'>Javascript Lazy Evaluation Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/clipboard_api_test.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Javascript Lazy Evaluation Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/lazy_evaluation.gif\" title=\"Javascript Lazy Evaluation Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Javascript Lazy Evaluation Primer Tutorial<\/p><\/div>\n<p>Do you remember, with the presentation of &#8230;<\/p>\n<ul>\n<li><a title='Promise Object Sleeping and Doing Primer Tutorial' href='#posdpt'>Promise Object Sleeping and Doing Primer Tutorial<\/a> we talked about the Javascript Promise object?  Well today, in that similar line of thinking, we wanted to touch on &#8230;<\/li>\n<li><a target=_blank title='Javascript Lazy Evaluation information' href='https:\/\/javascript.plainenglish.io\/javascript-lazy-evaluation-iterables-iterators-e0770a5de96f'>Lazy Evaluation<\/a> in Javascript &#8230;<br \/>\n<blockquote cite='https:\/\/javascript.plainenglish.io\/javascript-lazy-evaluation-iterables-iterators-e0770a5de96f'><p>\nLazy evaluation means to delay the evaluation of an expression until it\u2019s needed. Lazy evaluation is sometimes referred to as call-by-need.<br \/>\n<br \/>\nThe opposite of lazy evaluation is an eager evaluation. It\u2019s an evaluation strategy used in most programming languages.<br \/>\n<br \/>\nLazy evaluation makes it possible to:<br \/>\n<br \/>\ndefine potentially infinite data structures<br \/>\nincrease performance by avoiding needless computations<br \/>\ncustomize iteration behavior for data structures that want its elements accessible to the public\n<\/p><\/blockquote>\n<\/ul>\n<p>Personally, we&#8217;re more your &#8220;eager&#8221; types, but we&#8217;ve had help in the past from <i>brilliant<\/i> &#8220;lazy&#8221; types too, especially when we presented <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/selection-api-and-clipboard-api-tutorial\/' title='Selection API and Clipboard API Tutorial'>Selection API and Clipboard API Tutorial<\/a>, and so, we honed in on some Javascript &#8220;Lazy Evaluation&#8221; code, and put together some status information shown regarding timings and calls with respect to Javascript &#8230;<\/p>\n<ul>\n<li>&#8220;Lazy Evaluation&#8221; <font size=1>in Javascript<\/font> &#8230; classical syntax goes &#8230;<br \/>\n<code><br \/>\nf = () =&gt; expression;<br \/>\n<\/code><br \/>\n &#8230; and &#8230;\n<\/li>\n<li><a target=_blank title='Javascript async function information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Statements\/async_function'>async<\/a> <font size=1>function in Javascript<\/font> &#8230; classical syntax example goes &#8230;<br \/>\n<code><br \/>\nfunction resolveAfter2Seconds() {<br \/>\n  return new Promise((resolve) => {<br \/>\n    setTimeout(() => {<br \/>\n      resolve('resolved');<br \/>\n    }, 2000);<br \/>\n  });<br \/>\n}<br \/>\n<br \/>\nasync function asyncCall() {<br \/>\n  console.log('calling');<br \/>\n  const result = await resolveAfter2Seconds();<br \/>\n  console.log(result);<br \/>\n  \/\/ Expected output: \"resolved\"<br \/>\n}<br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p> &#8230; into <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/clipboard_api_test.html---GETME\">the changed<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/clipboard_api_test.html---GETME\" title=\"clipboard_api_test.html\">clipboard_api_test.html<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/clipboard_api_test.htm\">Selection and Clipboard API usage web application<\/a> for you to try yourself with some image or text clipboard usages.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/javascript-lazy-evaluation-primer-tutorial\/'>Javascript Lazy Evaluation Primer Tutorial<\/a>.<\/p-->\n<hr>\n<p id='posdpt'>Previous relevant <a target=_blank title='Promise Object Sleeping and Doing Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/promise-object-sleeping-and-doing-primer-tutorial\/'>Promise Object Sleeping and Doing Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/await.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Promise Object Sleeping and Doing Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/full_of_promise.jpg\" title=\"Promise Object Sleeping and Doing Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Promise Object Sleeping and Doing Primer Tutorial<\/p><\/div>\n<p>We&#8217;re here today to fulfil yesterday&#8217;s <a title='Web Application Controlled Progress Cursor Primer Tutorial' href='#wacpcpt'>Web Application Controlled Progress Cursor Primer Tutorial<\/a>&#8216;s pledge &#8230;<\/p>\n<blockquote cite=''><p>\n &#8230; which reminded me that we need to learn some more about the <a target=_blank title='Promise object information from w3schools' href='http:\/\/www.w3schools.com\/js\/js_promise.asp'>promise object<\/a>\n<\/p><\/blockquote>\n<p> &#8230; and were happy to discover the Promise object talents of &#8230;<\/p>\n<ul>\n<li>sleeping &#8230; allowing for &#8230;<\/li>\n<li>multitasking<\/li>\n<li>doing &#8230; all using clientside Javascript<\/li>\n<\/ul>\n<p> &#8230; very interesting.  The serverside languages such as PHP make it a doddle to multitask (via sleep) but Javascript sleep has not always been a straightforward proposition, until we could <a target=_blank title='Promise object information from w3schools' href='http:\/\/www.w3schools.com\/js\/js_promise.asp'>promise<\/a>, <a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg'>that is<\/a>!<\/p>\n<p>Today&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/await.html\">await.html<\/a>&#8216;s use of it to sleep and in between show &#8230;<\/p>\n<ol>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/analogue_clock.htm\">analogue clock<\/a> &#8230; and &#8230;<\/li>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/dams_usa.html\" title=\"Click picture\">Dams of the USA<\/a> (via <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/dams_usa.html-------GETME\" title=\"dams_usa.html\">dams_usa.html<\/a> changed <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/dams_usa.html-------GETME\" title=\"dams_usa.html\">this way<\/a>)<\/li>\n<\/ol>\n<p> &#8230; asynchronously both doing their own thing while the <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/await.html\">await.html<\/a> works away in the background too, feeding off &#8220;child 2&#8221; clicks of &#8220;child 1&#8221; above to know when to say how long the dams took to load.  Yes, the &#8220;child 2&#8221; &#8220;onload&#8221; event, alone, cannot help determine this, but more &#8220;drilling into&#8221; the inner workings of the code behind &#8220;child 2&#8243;&#8216;s progress element, via &#8230;<\/p>\n<p><code><br \/>\n&lt;html&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;script type='text\/javascript'&gt;<br \/>\nvar numsleeps=700000;<br \/>\nvar ix=0;<br \/>\nvar d=new Date();<br \/>\nvar marks=[new Date(), new Date()];<br \/>\nvar imark=0;<br \/>\n<br \/>\nfunction sleep(ms) {  \/\/ thanks to <a target=_blank title='https:\/\/stackoverflow.com\/questions\/951021\/what-is-the-javascript-version-of-sleep' href='https:\/\/stackoverflow.com\/questions\/951021\/what-is-the-javascript-version-of-sleep'>https:\/\/stackoverflow.com\/questions\/951021\/what-is-the-javascript-version-of-sleep<\/a><br \/>\n  return new Promise(resolve =&gt; setTimeout(resolve, ms));<br \/>\n}<br \/>\n<br \/>\nasync function demo() {<br \/>\n  console.log(numsleeps + ' Taking a break...' + d);<br \/>\n  await sleep(2000);<br \/>\n  d=new Date();<br \/>\n  console.log(numsleeps + ' Two seconds later, showing sleep in a loop...' + d);<br \/>\n<br \/>\n  \/\/ Sleep in loop<br \/>\n  for (let i = 0; i &lt; 5; i++) {<br \/>\n    if (i === 3) {<br \/>\n      await sleep(2000);<br \/>\n  d=new Date();<br \/>\n    console.log(numsleeps + ' ' + d);<br \/>\n<br \/> <br \/>\n    }<br \/>\n  }<br \/>\n  numsleeps--;<br \/>\n  if (('' + numsleeps) != '0' && ('' + numsleeps).indexOf('-') == -1) { setTimeout(demo, 1); }<br \/>\n}<br \/>\n<br \/>\nfunction betw() {<br \/>\n  var seconds = (marks[1].getTime() - marks[0].getTime()) \/ 1000;<br \/>\n  document.getElementById('sh1').innerHTML='It took ' + seconds + ' seconds (from ' + marks[0] + ' to ' + marks[1] + ') to load the dams.';<br \/>\n  numsleeps=0;<br \/>\n}<br \/>\n<br \/>\nfunction markit() {<br \/>\n  marks[imark]=d;<br \/>\n  imark++;<br \/>\n  console.log('mark ' + imark + ': ' + d);<br \/>\n  if (imark == 2) { setTimeout(betw, 800);  imark=0;  }<br \/>\n}<br \/>\n<br \/>\ndemo();<br \/>\n&lt;\/script&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;h1&gt;Sleeping and Doing via Promise Object - RJM Programming - July, 2021 &lt;span id=sh1&gt;&lt;\/span&gt;&lt;\/h1&gt;<br \/>\n&lt;table style=width:100%;height:90%;&gt;&lt;tr&gt;&lt;td&gt;&lt;iframe onclick=\"markit();\" id=lif src=.\/analogue_clock.htm style=width:100%;height:100%;&gt;&lt;\/iframe&gt;&lt;\/td&gt;&lt;td&gt;&lt;iframe id=rif src=.\/dams_usa.html?rand=7564675 style=width:100%;height:100%;&gt;&lt;\/iframe&gt;&lt;\/td&gt;&lt;\/tr&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n<\/code><\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/promise-object-sleeping-and-doing-primer-tutorial\/'>Promise Object Sleeping and Doing Primer Tutorial<\/a>.<\/p-->\n<hr>\n<p id='wacpcpt'>Previous relevant <a target=_blank title='Web Application Controlled Progress Cursor Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/web-application-controlled-progress-cursor-primer-tutorial\/'>Web Application Controlled Progress Cursor Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/cards_usefocus.html?card_memories=04.1:ara\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Web Application Controlled Progress Cursor Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/cursor_progress_between_a_first_and_second_javascript_prompt_popup_window.gif\" title=\"Web Application Controlled Progress Cursor Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Web Application Controlled Progress Cursor Primer Tutorial<\/p><\/div>\n<p>We had occasion to revisit the card game (and more) recent web application exploits highlighted in the recent <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/just-javascript-card-game-cursor-tutorial\/' title='Just Javascript Card Game Cursor Tutorial'>Just Javascript Card Game Cursor Tutorial<\/a> thread of blog postings and shaped to play Bridge via &#8230;<\/p>\n<p><code><br \/>\n<a target=_blank title='https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/cards_usefocus.html?card_memories=04.1:ara' href='\/\/www.rjmprogramming.com.au\/HTMLCSS\/cards_usefocus.html?card_memories=04.1:ara'>https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/cards_usefocus.html?card_memories=04.1:ara<\/a><br \/>\n<\/code><\/p>\n<p> &#8230; and was &#8220;personally relatively&#8221; happy up to the first Javascript prompt popup window.   Huh?!  What&#8217;s with &#8220;personally relatively&#8221;?   Can I be serious?  Well, I&#8217;m insulted!<\/p>\n<p>The thing is, I don&#8217;t mind, when I&#8217;m writing the code <font size=1>(funny about that?!)<\/font> very complex and convoluted prompt window instructions and options. But &#8230;<\/p>\n<ul>\n<li>not everybody is willing to read such long diatribes<\/li>\n<li>actions can speak louder than words, so we figure between those first two prompt windows in a Bridge or 500 card game, it would be beneficial to show a &#8220;progress cursor&#8221; (ie. usually associated with the user waiting for a process to finish) between the first and second prompt windows to help show the players there could be waiting and irrelevant players turning away should all four players want to play fairly in their game<\/li>\n<\/ul>\n<p>It was an interesting Javascript coding exercise &#8230;<\/p>\n<ol>\n<li>(sort of) overload the &#8220;prompt&#8221; function with our inhouse &#8220;superprompt&#8221; function via &#8230;\n<ul>\n<li>globally replace &#8221; prompt(&#8221; with &#8221; superprompt(&#8220;<\/li>\n<li>globally replace &#8220;=prompt(&#8221; with &#8220;=superprompt(&#8220;<\/li>\n<\/ul>\n<\/li>\n<li>add the following Javascript code &#8230;<br \/>\n<code><br \/>\n  var aheadoffirst=(('' + document.URL.replace('?', '&').indexOf('&card_') != -1) ? trueize() : 0);<br \/>\n<br \/>\n  function dbcpp() {<br \/>\n    if (aheadoffirst == 2) {<br \/>\n      document.body.style.cursor='progress';  \/\/ between first and second prompt windows<br \/>\n      setTimeout(dbcpp, 1000);<br \/>\n    } else if (aheadoffirst == 0) {<br \/>\n      document.body.style.cursor='pointer';<br \/>\n    } else {<br \/>\n      document.body.style.cursor='pointer';<br \/>\n      setTimeout(dbcpp, 1000);<br \/>\n    }<br \/>\n  }<br \/>\n<br \/>\n  function trueize() {  \/\/ bit like a promise<br \/>\n    setTimeout(dbcpp, 1000);<br \/>\n    return 1;<br \/>\n  }<br \/>\n<br \/> <br \/>\n  function superprompt(opone, optwo) {<br \/>\n    if (aheadoffirst == 3) {<br \/>\n      document.body.style.cursor='pointer';<br \/>\n      aheadoffirst=0;<br \/>\n    } else if (aheadoffirst != 0) {<br \/>\n      aheadoffirst++;<br \/>\n      if (aheadoffirst == 3) {<br \/>\n        document.body.style.cursor='progress'; \/\/ between first and second prompt windows<br \/>\n      }<br \/>\n    }<br \/>\n    return prompt(opone, optwo);<br \/>\n  }<br \/>\n<\/code>\n<\/li>\n<\/ol>\n<p> &#8230; which reminded me that we need to learn some more about the <a target=_blank title='Promise object information from w3schools' href='http:\/\/www.w3schools.com\/js\/js_promise.asp'>promise object<\/a>.<\/p>\n<p>See this in action with <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/cards_usefocus.html-------------------------------------------------------GETME\" title=\"cards_usefocus.html\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/cards_usefocus.html-------------------------------------------------------GETME\" title=\"cards_usefocus.html\">cards_usefocus.html<\/a> code behind the &#8220;Just Javascript&#8221; <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/cards_usefocus.html?card_memories=y\" title=\"Click picture\">Memories Card Game<\/a> or <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/cards_usefocus.html?onewindow=y\" title=\"Click picture\">live run with single window (good for mobile)<\/a> or <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/cards_usefocus.html\" title=\"Click picture\">default live run<\/a> (for your platform, and if non-mobile it will try child popup windows).<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d52808' onclick='var dv=document.getElementById(\"d52808\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/prompt\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d52808' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d52815' onclick='var dv=document.getElementById(\"d52815\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/promise\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d52815' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d61006' onclick='var dv=document.getElementById(\"d61006\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/async\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d61006' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d61010' onclick='var dv=document.getElementById(\"d61010\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/setTimeout\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d61010' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Further to yesterday&#8217;s Javascript Lazy Evaluation Primer Tutorial&#8216;s subject matter regarding Lazy Evaluations and Javascript async functions, we&#8217;ve stumbled upon another great resource, thanks, from which we can base, to develop a web application, we&#8217;re hoping. Within this &#8220;proof of &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/javascript-lazy-evaluation-follow-up-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,37],"tags":[2360,1614,218,4499,4494,4496,471,652,4495,4497,849,997,998,2357,3719,1126,2386,1282,1721],"class_list":["post-61010","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-async","tag-asynchronous","tag-code","tag-code-syntax","tag-eager","tag-evaluation","tag-function","tag-javascript","tag-lazy","tag-lazy-evaluation","tag-object","tag-programming","tag-programming-tutorial","tag-promise","tag-promise-object","tag-settimeout","tag-syntax","tag-timer","tag-variable"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/61010"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=61010"}],"version-history":[{"count":2,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/61010\/revisions"}],"predecessor-version":[{"id":61012,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/61010\/revisions\/61012"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=61010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=61010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=61010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}