日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

all方法 手写promise_试题-手写实现一个 promise.all - 拿OFFER

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。