mirror of
https://github.com/xfarrow/javascript-tutorials.git
synced 2025-02-10 16:50:41 +01:00
Compare commits
2 Commits
374f29c955
...
7b10c3ce19
Author | SHA1 | Date | |
---|---|---|---|
|
7b10c3ce19 | ||
|
04ab3177d2 |
@ -23,14 +23,13 @@ async function f2 () {
|
||||
f2()
|
||||
|
||||
// The code in the same function after "await"
|
||||
// is to be intended in the "then()" of the primise. This means
|
||||
// that after await (but before the completion of the Promise),
|
||||
// the flow of execution goes out that code block. For example
|
||||
// consider the following example:
|
||||
// is to be intended in the "then()" of the promise.
|
||||
// Consider the following example:
|
||||
async function exampleAsyncFunction () {
|
||||
console.log('Before await')
|
||||
await new Promise(function (resolve, reject) {
|
||||
setTimeout(() => resolve('done'), 500)
|
||||
console.log("In the Promise")
|
||||
setTimeout(() => resolve(), 500)
|
||||
}) // Pauses execution here until the promise resolves.
|
||||
console.log('After await')
|
||||
}
|
||||
@ -38,11 +37,52 @@ console.log('Start')
|
||||
exampleAsyncFunction()
|
||||
console.log('End')
|
||||
|
||||
// The result will be:
|
||||
// Start, Before Await, End, After await
|
||||
// "End" comes before "After Await" because the
|
||||
// flow of execution goes to the caller
|
||||
// when await is invoked.
|
||||
/*
|
||||
|
||||
The result will be:
|
||||
Start, Before Await, In the Promise, End, After await
|
||||
"End" comes before "After Await" because the
|
||||
flow of execution goes to the caller of exampleAsyncFunction
|
||||
after setTimeout() gets enqueued in the Event Loop Thread
|
||||
but before 500ms have elapsed.
|
||||
|
||||
+---------------+
|
||||
| Main |
|
||||
+---------------+
|
||||
|
|
||||
|
|
||||
v
|
||||
+----------------------+
|
||||
|exampleAsyncFunction |
|
||||
+----------------------+
|
||||
|
|
||||
|
|
||||
v
|
||||
+---------------+
|
||||
| Promise |
|
||||
+---------------+
|
||||
|
|
||||
|
|
||||
v
|
||||
+----------------------------------------+
|
||||
|Enqueue resolve() and exit immediately | +--------------------------------+
|
||||
+----------------------------------------+ -------------------------------> |Wait 500ms in the libuv library |
|
||||
| +--------------------------------+
|
||||
| Nothing left to do in the AWAIT, return to caller |
|
||||
v |
|
||||
+---------------+ |
|
||||
| Main | |
|
||||
+---------------+ |
|
||||
| |
|
||||
| |
|
||||
v |
|
||||
+-------------------+ |
|
||||
| Then() of Promise | <-----------------------------------------------------------
|
||||
+-------------------+
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
// Questions
|
||||
//
|
||||
|
Loading…
x
Reference in New Issue
Block a user