美文网首页
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