From 5ca83ba7babb2a089e7dd85b14a8f91f1567fe74 Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Wed, 13 Mar 2019 23:08:35 +0300 Subject: [PATCH] refactor --- .../01-promise-errors-as-results/solution.md | 0 .../solution.view/index.html | 0 .../source.view/index.html | 0 .../01-promise-errors-as-results/task.md | 0 .../solution.md | 0 .../solution.view/index.html | 0 .../source.view/index.html | 0 .../02-promise-errors-as-results-2/task.md | 0 .../article.md | 0 .../head.html | 0 .../iliakan.json | 0 .../{06-promise-api => 05-promise-api}/one.js | 0 .../{06-promise-api => 05-promise-api}/two.js | 0 1-js/11-async/05-promise-queue/article.md | 109 -------------- .../05-promise-queue/promiseQueue.png | Bin 23981 -> 0 bytes .../05-promise-queue/promiseQueue@2x.png | Bin 57298 -> 0 bytes .../{07-promisify => 06-promisify}/article.md | 0 1-js/11-async/07-microtask-queue/article.md | 139 ++++++++++++++++++ .../11-async/07-microtask-queue/eventLoop.png | Bin 0 -> 20333 bytes .../07-microtask-queue/eventLoop@2x.png | Bin 0 -> 46520 bytes .../07-microtask-queue/promiseQueue.png | Bin 0 -> 13820 bytes .../07-microtask-queue/promiseQueue@2x.png | Bin 0 -> 35301 bytes 1-js/11-async/08-async-await/article.md | 33 +---- figures.sketch | Bin 4139241 -> 4141314 bytes 24 files changed, 144 insertions(+), 137 deletions(-) rename 1-js/11-async/{06-promise-api => 05-promise-api}/01-promise-errors-as-results/solution.md (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/01-promise-errors-as-results/solution.view/index.html (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/01-promise-errors-as-results/source.view/index.html (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/01-promise-errors-as-results/task.md (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/02-promise-errors-as-results-2/solution.md (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/02-promise-errors-as-results-2/solution.view/index.html (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/02-promise-errors-as-results-2/source.view/index.html (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/02-promise-errors-as-results-2/task.md (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/article.md (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/head.html (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/iliakan.json (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/one.js (100%) rename 1-js/11-async/{06-promise-api => 05-promise-api}/two.js (100%) delete mode 100644 1-js/11-async/05-promise-queue/article.md delete mode 100644 1-js/11-async/05-promise-queue/promiseQueue.png delete mode 100644 1-js/11-async/05-promise-queue/promiseQueue@2x.png rename 1-js/11-async/{07-promisify => 06-promisify}/article.md (100%) create mode 100644 1-js/11-async/07-microtask-queue/article.md create mode 100644 1-js/11-async/07-microtask-queue/eventLoop.png create mode 100644 1-js/11-async/07-microtask-queue/eventLoop@2x.png create mode 100644 1-js/11-async/07-microtask-queue/promiseQueue.png create mode 100644 1-js/11-async/07-microtask-queue/promiseQueue@2x.png diff --git a/1-js/11-async/06-promise-api/01-promise-errors-as-results/solution.md b/1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.md similarity index 100% rename from 1-js/11-async/06-promise-api/01-promise-errors-as-results/solution.md rename to 1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.md diff --git a/1-js/11-async/06-promise-api/01-promise-errors-as-results/solution.view/index.html b/1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.view/index.html similarity index 100% rename from 1-js/11-async/06-promise-api/01-promise-errors-as-results/solution.view/index.html rename to 1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.view/index.html diff --git a/1-js/11-async/06-promise-api/01-promise-errors-as-results/source.view/index.html b/1-js/11-async/05-promise-api/01-promise-errors-as-results/source.view/index.html similarity index 100% rename from 1-js/11-async/06-promise-api/01-promise-errors-as-results/source.view/index.html rename to 1-js/11-async/05-promise-api/01-promise-errors-as-results/source.view/index.html diff --git a/1-js/11-async/06-promise-api/01-promise-errors-as-results/task.md b/1-js/11-async/05-promise-api/01-promise-errors-as-results/task.md similarity index 100% rename from 1-js/11-async/06-promise-api/01-promise-errors-as-results/task.md rename to 1-js/11-async/05-promise-api/01-promise-errors-as-results/task.md diff --git a/1-js/11-async/06-promise-api/02-promise-errors-as-results-2/solution.md b/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/solution.md similarity index 100% rename from 1-js/11-async/06-promise-api/02-promise-errors-as-results-2/solution.md rename to 1-js/11-async/05-promise-api/02-promise-errors-as-results-2/solution.md diff --git a/1-js/11-async/06-promise-api/02-promise-errors-as-results-2/solution.view/index.html b/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/solution.view/index.html similarity index 100% rename from 1-js/11-async/06-promise-api/02-promise-errors-as-results-2/solution.view/index.html rename to 1-js/11-async/05-promise-api/02-promise-errors-as-results-2/solution.view/index.html diff --git a/1-js/11-async/06-promise-api/02-promise-errors-as-results-2/source.view/index.html b/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/source.view/index.html similarity index 100% rename from 1-js/11-async/06-promise-api/02-promise-errors-as-results-2/source.view/index.html rename to 1-js/11-async/05-promise-api/02-promise-errors-as-results-2/source.view/index.html diff --git a/1-js/11-async/06-promise-api/02-promise-errors-as-results-2/task.md b/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/task.md similarity index 100% rename from 1-js/11-async/06-promise-api/02-promise-errors-as-results-2/task.md rename to 1-js/11-async/05-promise-api/02-promise-errors-as-results-2/task.md diff --git a/1-js/11-async/06-promise-api/article.md b/1-js/11-async/05-promise-api/article.md similarity index 100% rename from 1-js/11-async/06-promise-api/article.md rename to 1-js/11-async/05-promise-api/article.md diff --git a/1-js/11-async/06-promise-api/head.html b/1-js/11-async/05-promise-api/head.html similarity index 100% rename from 1-js/11-async/06-promise-api/head.html rename to 1-js/11-async/05-promise-api/head.html diff --git a/1-js/11-async/06-promise-api/iliakan.json b/1-js/11-async/05-promise-api/iliakan.json similarity index 100% rename from 1-js/11-async/06-promise-api/iliakan.json rename to 1-js/11-async/05-promise-api/iliakan.json diff --git a/1-js/11-async/06-promise-api/one.js b/1-js/11-async/05-promise-api/one.js similarity index 100% rename from 1-js/11-async/06-promise-api/one.js rename to 1-js/11-async/05-promise-api/one.js diff --git a/1-js/11-async/06-promise-api/two.js b/1-js/11-async/05-promise-api/two.js similarity index 100% rename from 1-js/11-async/06-promise-api/two.js rename to 1-js/11-async/05-promise-api/two.js diff --git a/1-js/11-async/05-promise-queue/article.md b/1-js/11-async/05-promise-queue/article.md deleted file mode 100644 index fe1c8ae6..00000000 --- a/1-js/11-async/05-promise-queue/article.md +++ /dev/null @@ -1,109 +0,0 @@ - -# Promise handlers queue - -Promise handlers `.then`/`.catch`/`.finally` are always asynchronous. - -Even when a Promise is immediately resolved, the code on the lines *below* your `.then`/`.catch`/`.finally` may still execute first. - -Here's the code that demonstrates it: - -```js run -// an "immediately" resolved Promise -new Promise(resolve => resolve("promise done!")) - .then(alert); // this alert shows after the alert below - -alert("code finished"); // this alert shows first -``` - -If you run it, you see `code finished` first, and then `promise done!`. - -What's going on? - -# Internal queue - -Asynchronous tasks need proper management. For that, the standard specifies an internal queue of "Promise Jobs", sometimes called "microtask queue" (v8 term). - -As said in the [specification](https://tc39.github.io/ecma262/#sec-jobs-and-job-queues): - -- The queue is first-in-first-out: jobs that get enqueued first are run first. -- Execution of a job is initiated only when there is no running execution context, and the execution context stack is empty. - -When a promise is ready, its `.then/catch/finally` handler is not executed right ahead. Instead, the handling is put into the queue. - -Javascript engine takes a job from the queue and executes it, when it finishes executing the current code. - -That's why "code finished" in the example above shows first. - -![](promiseQueue.png) - -If there's a chain with multiple `.then/catch/finally`, then every one of them is executed asynchronously. In other words, it first gets queued, and then executed, when all handlers before it are finished. - -What if the order matters for us, and we want to see `code finished` after `promise done`? - -Easy, just put it into the queue with `.then`: - -```js run -new Promise(resolve => resolve("promise done!")) - .then(alert) - .then(() => alert("code finished"); -``` - -Now the order is as intended. - -## Higher-order queues - -There are other action queues, depending on the environment, often called "macrotasks" (as opposed to promise "microtasks"). - -For instance, `setTimeout` enqueues an action when the time comes, or even right now if the timeout is zero: - -```js -setTimeout(handler, 0); // handler is queued for immediate execution. -``` - -Other examples: -- Events that wait to be handled (like mouse moves in the browser) -- Completed network operations, pending to be handled. These, just like `setTimeout`, may take time, or finish immediately if the result is cached. - -**Promise queue has a higher priority than environment-related queues.** - -For instance, take a look: - -```js run -setTimeout(() => alert("timeout"), 0); - -new Promise(resolve => resolve("promise")) - .then(alert); - -alert("code"); -``` - -1. `code` shows first, it's a regular synchronous call. -2. `promise` shows second, because `.then` passes through the promise queue, runs after the current code. -3. `timeout` shows last, because environment-specific queue has lower priority. - -That's also true for nested calls, e.g if we schedule an immediate `setTimeout` call inside the promise: - -```js run -new Promise(resolve => { - setTimeout(() => alert("timeout"), 0); - resolve("promise"); // shows up first -}).then(alert); -``` - -Here also `promise` triggers first, because promise handling have higher priority. - -## Summary - -Promise handling is always async, as all promise actions pass through the internal "promise jobs" queue, also called "microtask queue" (v8 term). - -**So, `.then/catch/finally` is called after the current code is finished.** - -If we need to guarantee that a piece of code is executed after `.then/catch/finally`, it's best to add it into a chained `.then` call. - -Other environments may have their own async actions, like events, network-related calls, filesystem tasks, and `setTimeout`-scheduled calls. These are also called "macrotasks" (v8 term). - -**Environment-specific async actions happen after the code is finished *and* after the promise queue is empty.** - -In other words, they have lower priority. - -So the order is: regular code, then promise handling, then everything else. diff --git a/1-js/11-async/05-promise-queue/promiseQueue.png b/1-js/11-async/05-promise-queue/promiseQueue.png deleted file mode 100644 index e373374a2f505b6755322ab85dae0bf33f88cbce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23981 zcmbrmWmsHI(=Cj!~`pnA7Uwf{7ssfS4-`L&g?+Rm@QU4N_ZxDdjr}OVuhW z!vVq()g{TWXyA!^A*A8Mbv;iY5sf?q(Xk8RK!IOlV@(WjZQISFKQ!R@eC}yhnnT z^`jI8e4I7*B$x|(3YU{ZBJCvyvqzFY$)#hjc%$0<_i@$MLYaT{w zmR4#SCR~uEvbe;4AGV65il%KOrIkXZ!pX?q?@xz3nKuzx@`tBME2XR_&j^+^ekcBI z$-Np334v(izAiQv7DwIr1qG;TB&ZCqi>N-Cne? z9kN+dG=An;b$&UiI+R*h{;e%Ns9FUV&xE&t;q)aG3t`gL1~N{$0*MPEDH1x1cPXit z{3smc{B^7oJ>cZnQTH7``GMgY-5HVtOb!2GwGsT`YW!jY3m@NYXdJWWMO#hH7#5k} z7O`}!@vk+slw4Gk*~L_9IUFbOFdy3dm3pW$3{z$Ek<3jv=fzpfXM+3@(w^qHTUl4C z&I^WBcOVcN_AWZDPB0_c%jrw8$gDofIC;Wpa${gCVM&IApOCQK#uRin5kHTxX$AG< zYW!tip$A_X%3*o!r5V@Y@_eKRx25MrMH;z!NFeN1rc1d&?o1ks@TG3 z)Q+oeDNOgRN$!jxsCHFm`&gDP2cxk+UvJ}b-4m#9b$hY@B4=HRiaXFW`A|)`8#mKn zKHZR%gMn~w`cR6@_18I2|Hss*jodF>%$zwJsj%#r4IsCM-| zNk>^K2{WhH27@)<){bXHhlfegea%k0a#1i&e+DzJgl7DVTO*}+iNrt0@kSSJS%~9* z0(mm@^4V$iHJ53Nk171{lX5Cbzjw_1Ch8@c&fn0;uM*O#Jc(USBb?PYPcEtKDq&UP zQV9S1!dy#I&D@#AxU96W0k$+)op^SI4(Svn=9ed6(uh#)IhEudBQNWHtYFYiQuI>< zpY!&xS@uwZYD(_nSRs0MOvf*+&MVtA(?v3~lV(mfg}Rf( zk3S>gX`;vYw4kTGuj6)aUe1f?mSP0u8GHdzw3-k=?1XuQI5VBgLN>4K+e3h+

LO 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 O?Y`C{P4qp>kbeQi>R)UC diff --git a/1-js/11-async/07-promisify/article.md b/1-js/11-async/06-promisify/article.md similarity index 100% rename from 1-js/11-async/07-promisify/article.md rename to 1-js/11-async/06-promisify/article.md diff --git a/1-js/11-async/07-microtask-queue/article.md b/1-js/11-async/07-microtask-queue/article.md new file mode 100644 index 00000000..2c555515 --- /dev/null +++ b/1-js/11-async/07-microtask-queue/article.md @@ -0,0 +1,139 @@ + +# Microtasks, event loop + +Promise handlers `.then`/`.catch`/`.finally` are always asynchronous. + +Even when a Promise is immediately resolved, the code on the lines *below* your `.then`/`.catch`/`.finally` may still execute first. + +Here's the code that demonstrates it: + +```js run +let promise = Promise.resolve(); + +promise.then(() => alert("promise done")); + +alert("code finished"); // this alert shows first +``` + +If you run it, you see `code finished` first, and then `promise done`. + +That's strange, because the promise is definitely done from the beginning. + +Why `.then` triggered after? What's going on? + +# Microtasks + +Asynchronous tasks need proper management. For that, the standard specifies an internal queue `PromiseJobs`, more often called the "microtask queue" (v8 term). + +As said in the [specification](https://tc39.github.io/ecma262/#sec-jobs-and-job-queues): + +- The queue is first-in-first-out: tasks that get enqueued first are run first. +- Execution of a task is initiated only when nothing else is running. + +Or, to say that simply, when a promise is ready, its `.then/catch/finally` handlers are put into the queue. They are not executed yet. Javascript engine takes a task from the queue and executes it, when it becomes free from the current code. + +That's why "code finished" in the example above shows first. + +![](promiseQueue.png) + +Promise handlers always go through that internal queue. + +If there's a chain with multiple `.then/catch/finally`, then every one of them is executed asynchronously. + +That is, it first gets queued, and executed when the current code is complete and previously queued handlers are finished. + +What if the order matters for us? How to make `code finished` work after `promise done`? + +Easy, just put it into the queue with `.then`: + +```js run +Promise.resolve() + .then(() => alert("promise done!")) + .then(() => alert("code finished")); +``` + +Now the order is as intended. + +## Event loop + +Browser Javascript, as well as Node.js, is based on an *event loop*. + +"Event loop" is a process when the engine sleeps waits for events. + +Examples of events: +- `mousemove`, a user moved their mouse. +- `setTimeout` handler is to be called. +- an external `