Promise.all实现

2021-06-28  本文已影响0人  Ag_fronted
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));

上一篇 下一篇

猜你喜欢

热点阅读