- 首页 > it技术 > >
Promise|Promise 高级用法对比
const p = Promise.all([p1, p2, p3])
// p1, p2, p3 为传入 promise 的实例
- Promise.all(ES2015):只有当传入的每个 Promise 实例的状态都变成 fulfilled 时,p 才 fulfilled,只要实例中有任意一个的状态是 rejected 的状态就变成了 rejected;
- Promise.race(ES2015):当传入的 Promise 实例中有一个的状态最先改变(注意是第一个改变状态的实例),那么 p 的状态就是该实例的状态,然后进行返回;
- Promise.allSettled(ES2020):只有等到所有传入的 Promise 实例都返回结果,不管是 fulfilled 还是 rejected,实例才会结束,然后返回对应的每个实例的状态;
- 【Promise|Promise 高级用法对比】Promise.any(ES2021):当其中任何一个 Promise 实例 fulfilled 时,就返回该已完成的实例的 Promise。如果所有的实例都 rejected,那么就返回一个拒绝的 Promise 实例。
const pAny = Promise.all([p1, p2, p3])
Promise.any(pAny).then(
resolve => {
// 任何一个Promise完成
},
reject => {
// 所有的 Promise都拒绝了
}
)
推荐阅读