在工作中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)
})
}
})
}