Promise.all() 的实现

92 阅读1分钟

原生Promise.all方法的分析

  1. 接收一个promise数组,返回一个结果数组
  2. 能用.then进行链式调用
  3. 所有promise成功执行后返回最终的值
  4. 当有一个promise被reject时,直接返回reject的信息

代码实现

Promise.prototype.all=function(promisArr){
    let count = 0;
    let res = [];
    return Promise((resolve,reject)=>{
        for(let [index,item] of promisArr.entries()){
            Promise.resolve(item).then((result)=>{
               res[index] = result;
               count++;
               if(count===promisArr.length){
                   resolve(res)
               }
            }).catch((err)=>{
                reject(err)
            })
        }
    })
}