- Overview of nonlinear control flow in javascript
- Async function
- Syntax(function, method, async arrow function expression)
- Runtime -> Diagram how it works…
- Examples
- Use Symbols.Async
- Using await
- Using promises
- Promise all
- Promise race
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
async function foo () { | |
const result = await fetch("https://randomuser.me/api/?results=10", { method: "GET" }); | |
return result; | |
} | |
async function bar() { | |
console.log(await foo()); | |
}; | |
bar(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var getPromise = (value, delay) => { | |
return new Promise(resolve => { | |
setTimeout(() => resolve(value), delay); | |
}); | |
}; | |
var promise1 = getPromise('value-1', 350); | |
var promise2 = getPromise('value-2', 250); | |
var promise3 = getPromise('value-3', 150); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var getPromise = (value, delay) => { | |
return new Promise(resolve => { | |
setTimeout(() => resolve(value), delay); | |
}); | |
}; | |
var promise1 = getPromise('value-1', 150); | |
var promise2 = getPromise('value-2', 250); | |
var promise3 = getPromise('value-3', 50); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var promiseImmediate = Promise.reject('Immediate value'); | |
promiseImmediate.then( | |
result => console.log('promiseImmediate success:', result), | |
error => console.log('promiseImmediate fail:', error) | |
); // promiseImmediate fail: Immediate value | |
promiseImmediate.catch(error => console.log('promiseImmediate catch:', error)); | |
var resolver = {}; | |
var promise = new Promise((resolve, reject) => { resolver.reject = reject; }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var promiseImmediate = Promise.resolve('Immediate value'); | |
promiseImmediate.then(result => console.log('promiseImmediate:', result)); | |
// 'promiseImmediate: Immediate value' will visible imidiatly | |
var resolver = {}; | |
var promise = new Promise(resolve => { resolver.resolve = resolve; }); | |
var promiseDefferred = Promise.resolve(promise); | |
promiseDefferred.then(result => console.log('promiseDefferred:', result)); | |
// No any text |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var getPromise = (value, delay) => { | |
return new Promise(resolve => { | |
setTimeout(() => resolve(value), delay); | |
}); | |
}; | |
var promise = getPromise('start value', 150); | |
promise | |
.then(result => { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var bar = new Promise(function (resolve) { | |
setTimeout(function () { reject('error'); }, 50); | |
}); | |
bar.then(function() {}, function (reject) { | |
console.log('reject:', reject); | |
}); // reject:error | |
bar.catch(function (reject) { | |
console.log('catch:', reject); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Create promise | |
var promise = new Promise(function (resolve) { | |
//Resolve promise in 50ms with string 'success' | |
setTimeout(function () { resolve('success'); }, 50); | |
}); | |
// Handle successful resolve of promise | |
promise.then(function (result) { | |
console.log(result); // Print: success | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var promise = new Promise(function(resolve, reject) { … } ); |