Promise
构造器
js
const promise = new Promise((resolve, reject) => {
if (true) {
resolve(res);
} else {
reject(err);
}
});
静态方法
resolve(any)
js
// 返回一个状态为 resolve 的 promise
const promise = Promise.resolve("成功时的结果");
reject(any)
js
// 返回一个状态为 reject 的 promise
const promise = Promise.reject("拒绝时的结果");
all(promise[])
js
// 全为 resolve 时,才返回 resolve
Promise.all([promise0, promise1])
.then(([res0, res1]) => {})
.catch()
.finally();
allSettled(promise[])
js
// 全部敲定时,返回所有敲定的结果
Promise.allSettled([promise0, promise1])
.then(([res0, res1]) => {})
.catch()
.finally();
any(promise[])
js
// 任意一个为 resolve 时, 返回该promise的结果
Promise.any([promise0, promise1])
.then((res) => {})
.catch()
.finally();
race(promise[])
js
// 任意一个敲定时,返回该 promise 的结果
Promise.race([promise0, promise1])
.then((res) => {})
.catch()
.finally();
实例方法
then(callback,callback)
js
const p = new Promise((resolve, reject) => {
true ? resolve("result") : reject("reason");
});
p.then(
(result) => {
console.log("敲定为resolve时,将此回调推入微任务队列");
},
(reasion) => {}
console.log("敲定为reject时,将此回调推入微任务队列");
);
/**
* promise的状态决定then中的哪个回调会被执行
* then里的回调的返回值决定then的promise的状态
*/
catch(callback(reject))
js
// then的一种简写
Promise.reject("err").then(null, callback);
Promise.reject("err").catch((reason) => {
console.log("promise被敲定为reject时,将callback推入微任务队列");
});
finally(callback)
js
/**
* promise被敲定(无论为resolve或reject)时,
* 将回调推入微任务队列
* 接收不到 result 和 reason
*/
Promise.resolve().then().catch().finally();
async、await
async
将此函数的返回值包装为 promise,并开启 await 关键字
await
将所在函数的分成两段,await 以左视为同步进程, await 右侧的 promise 敲定时,将 await 以下的部分推入微任务队列
js
async function fun() {
console.log("同步");
const res = await Promise.resolve();
return res;
}