对promise.all底层的实现的研究

1.Promise.all(iterable)返回一个新的Promise实例,此实例在iterable参数内素有的Promise都fulfilled或者参数中不包含Promise时,状态变成fulfilled。 如果参数中Promise有一个失败rejected ,此实例回调失败,失败原因的是第一个失败Promise的返回结果
let p = Promise.all([m1,m2,m3])

Promise.all=function (promise) {
return new promise((resolve,reject)=>{
let index=0
let result =[]
if(promise.length===0){
resolve(result)
}else {
function processValue(i,data) {
result[i]=data
if(++i===promise.length){
resolve(result)
}
}
for (let i=0 ;i<promise.length;i++){
Promise.resolve(promise[i]).then((data)=>{
processValue(i,data)
},(err)=>{
reject(err)
return
}
)
}
}
})
}

 

posted @ 2019-07-24 14:19  又回到了起点  阅读(721)  评论(0编辑  收藏  举报