Promise 作为 JS 社区的异步解决方案,为开发者提供了.then()
、Promise.resolve()
、Promise.reject()
等基本方法。除此之外,为了更方便地组合和控制多个的 Promise 实例,也提供了.all()
、.race()
等方法。
本文会在 Promise 的基本方法上,手动实现更高级的方法,来加深对 Promise 的理解:
Promise.all
Promise.race
Promise.any
Promise.allSettled
Promise.finally
⚠️ 完整代码和用例请到github.com/dongyuanxin/diy-promise。
Promise.all(iterators)
返回一个新的 Promise 实例。iterators 中包含外界传入的多个 promise 实例。
对于返回的新的 Promise 实例,有以下两种情况:
fulfilled
,那么返回的 promise 实例的状态就是fulfilled
,并且其 value 是 传入的所有 promise 的 value 组成的数组。rejected
,那么返回的 promise 实例的状态立即变为rejected
。实现思路:
Promise.resolve()
包装