手写promise.all、promise.race

80 阅读1分钟

promise.all

Promise.all = function(arr){
  let arrLen = arr.length;
  let arrRes = [];
  let proI = 0;
  return new Promise((resolve,reject)=>{
    for(let i=0;i<arr.length;i++){
      Promise.resolve(arr[i]).then((data)=>{
        arrRes[i] = data;
        proI++;
        if(proI == arrLen){
           resolve(arrRes)
      }
      }).catch((err)=>{
        reject(err)
      })
    }
  })
}

promise.race

Promise.race = function(arr){
    return new Promise((resolve,reject)=>{
      for(let i=0;i<arr.length;i++){
          Promise.resolve(arr[i]).then((data)=>{
            resolve(data)
          }).catch((err)=>{
            reject(err)
          })
        }
    })
}