all
我们知道,all 接受 promise 对象组成的数组,所有 promise 成功,才表现为成功,一个 promise 失败则整体失败。返回值也是 promise 数组
Promise.prototype._all=function(arr){
let list=[]
return new Promise((resolve,reject)=>{
for(let i=0;i<arr.length;i++){
arr[i].then(res=>{
list.push(res)
list.length===arr.length && resolve(list)
},err=>{
reject(err)
})
}
})
}
race
race 的处理方式是以第一个解决的 promise 为结果,无论成功与否
Promise.prototype._race=function(arr){
let success=false
let error=false
return new Promise((resolve,reject)=>{
for(let i=0;i<arr.length;i++){
arr[i].then(res=>{
!success && !error && resolve(data)
success=true
},err=>{
!error && !success && reject(err)
error=true
})
}
})
}