Promise .then/.catch/.finally
Promise .then/.catch/.finally
:
let promise = Promise.resolve();
promise.then(() => alert("promise done!"));
alert("code finished"); //
code finished promise done!
Promise
.then
Microtasks
ECMA PromiseJobs microtask (v8 )
- (first-in-first-out):
Promise .then/catch/finally JavaScript
code finished
Promise
.then/catch/finally
promise done code finished
.then :
Promise.resolve()
.then(() => alert("promise done!"))
.then(() => alert("code finished"));
(Unhandled rejection)
Promise unhandledrejection
JavaScript
microtask Promise
Promise .catch :
let promise = Promise.reject(new Error("Promise Failed!"));
promise.catch(err => alert('caught'));
// : error handled
window.addEventListener('unhandledrejection', event => alert(event.reason));
.catch microtask :
let promise = Promise.reject(new Error("Promise Failed!"));
// : Promise Failed!
window.addEventListener('unhandledrejection', event => alert(event.reason));
:
let promise = Promise.reject(new Error("Promise Failed!"));
setTimeout(() => promise.catch(err => alert('caught')), 1000);
// : Error: Promise Failed!
window.addEventListener('unhandledrejection', event => alert(event.reason));
Promise Failed! caught
microtask : unhandledrejection !
unhandledrejection microtask : Promise (rejected)
setTimeout .catch unhandledrejection
Promise microtask (v8 ) promise jobs Promise
.then/catch/finally
.then/catch/finally Promise .then
Node.js JavaScript microtask microtask Promise (event loop): microtask macrotask
<code><pre>10(plnkr, JSBin, codepen)