在工作中promise使用的场景还是很多的,偶尔也会用到其中的all和race方法,前端面试的时候也经常问到,下面就来实现以下。

一、All方法的实现

function myALL(arr){
  return new Promise((resolve,reject)=>{
    const result = []
    let count = 0
    let len = arr.length
    for(let i = 0;i < len; i++){
      Promise.resolve(arr[i]).then(res=>{
        result[i] = res
        count++
        if(count === len){
          resolve(result)
        }
      }).catch(err=>{
        reject(err)   
      })
    }
  })
}

二、Race方法的实现

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

伯约同学
62 声望3 粉丝