手写 Promise.all

记忆题,写博客吧。

要点:

  1. 知道要在原型上写

  2. 知道 all 的参数和返回值

  3. 知道用数组来记录结果

  4. 知道只要有一个 reject 就整体 reject

Promise.myAll = function (list) {
  const results = [];
  let count = 0;
  return new Promise((resolve, reject) => {
    list.map((promise, index) => {
      promise.then(
        (r) => {
          results[index] = r;
          count += 1;
          if (count === list.length) {
            resolve(results);
          }
        },
        (reason) => {
          reject(reason);
        }
      );
    });
  });
};

进一步提问:是否知道 Promise.allSettled()

Last updated