前端新手

Promise 高级用法对比

2020-12-04  本文已影响0人  刘员外__
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.any(ES2021):当其中任何一个 Promise 实例 fulfilled 时,就返回该已完成的实例的 Promise。如果所有的实例都 rejected,那么就返回一个拒绝的 Promise 实例。

const pAny = Promise.all([p1, p2, p3])
Promise.any(pAny).then(
  resolve => {
    // 任何一个Promise完成
  },
  reject => {
    // 所有的 Promise都拒绝了
  }
)
上一篇下一篇

猜你喜欢

热点阅读