手写 Promise.All

37 阅读1分钟

先写类型

type IAll = (promises: Promise<any>[]|any[]) => Promise<any[]>;

简单来说就是这是一个把一组 promise 转换成一个 promise 的方法,最会 Promise 的 resolve 时机是最后一个执行完成,reject 时机是只有一个有错就报错。

  • 通过 count 来记录 promise 是哪一个,如果和数组长度相等说明是最后一个,抛给外层的 resolve
  • 在执行每个小 promise 时,如果发生错误就抛给外层的 reject

1.1 扩展运算符(...

虽然平时用的比较多,但是对这个定义忘了,

  • ... 允许在期望零个或多个参数或元素的位置上展开可迭代对象

扩展运算法是和可迭代对象(类数组)相关的,一些常见的类数组有

  • 字符串,set,和 nodelist