美文网首页
Promise.all实现

Promise.all实现

作者: Ag_fronted | 来源:发表于2021-06-28 16:45 被阅读0次
var p1 = new Promise((resolve) =>
  setTimeout(() => {
    resolve(1);
  }, 0)
);
var p2 = new Promise((resolve) =>
  setTimeout(() => {
    resolve(2);
  }, 30)
);
var p3 = new Promise((resolve) =>
  setTimeout(() => {
    resolve(3);
  }, 10)
);

function generatePromiseAll(promises) {
  if (promises && Array.isArray(promises) && promises.length) {
    return new Promise((resolve, reject) => {
      const result = [];
      let counter = 0;
      promises.forEach((v, index) => {
        Promise.resolve(v).then(
          (data) => {
            result[index] = data;
            counter++;
            if (counter === promises.length) {
              resolve(result);
            }
          },
          (error) => {
            reject(error);
          }
        );
      });
    });
  }
}

generatePromiseAll([p1, p2, 5, p3]).then((v) => console.log(v));
// Promise.all([p1, p2, p3]).then((v) => console.log(v));

相关文章

网友评论

      本文标题:Promise.all实现

      本文链接:https://www.haomeiwen.com/subject/tmoqultx.html