對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
}
)
}
}
})
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM