Promise|Promise 高级用法对比

const p = Promise.all([p1, p2, p3]) // p1, p2, p3 为传入 promise 的实例

  1. Promise.all(ES2015):只有当传入的每个 Promise 实例的状态都变成 fulfilled 时,p 才 fulfilled,只要实例中有任意一个的状态是 rejected 的状态就变成了 rejected;
  2. Promise.race(ES2015):当传入的 Promise 实例中有一个的状态最先改变(注意是第一个改变状态的实例),那么 p 的状态就是该实例的状态,然后进行返回;
  3. Promise.allSettled(ES2020):只有等到所有传入的 Promise 实例都返回结果,不管是 fulfilled 还是 rejected,实例才会结束,然后返回对应的每个实例的状态;
  4. 【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都拒绝了 } )

    推荐阅读