all方法 手写promise_试题-手写实现一个 promise.all - 拿OFFER
Promise.all的實現和原理
Promise.all 功能:
Promise.all(iterable)返回一個新的Promise實例,此實例在iterable參數內素有的Promise都fulfilled或者參數中不包含Promise時,狀態變成fulfilled。
如果參數中Promise有一個失敗rejected ,此實例回調失敗,失敗原因的是第一個失敗Promise的返回結果let p = Promise.all([p1,p2,p3])
復制代碼p的狀態由 p1,p2,p3決定,分成以下;兩種情況:
(1)只有p1、p2、p3的狀態都變成 fulfilled,p的狀態才會變成 fulfilled,此時p1、p2、p3的返回值組成一個數組,傳遞給p的回調函數。
(2)只要p1、p2、p3之中有一個被 rejected,p的狀態就變成 rejected,此時第一個被reject的實例的返回值,會傳遞給p的回調函數。
Promise.all 的特點:????Promise.all的返回值是一個Promise實例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 (++index === 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
})
}
}
})
}
總結
以上是生活随笔為你收集整理的all方法 手写promise_试题-手写实现一个 promise.all - 拿OFFER的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 报表工具实现单据套打
- 下一篇: java 英语_Java常用英语汇总(更