• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    JavaScript中Promise.all和Promise.race方法的介紹(附代碼)

    來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 19:27:13
    文檔

    JavaScript中Promise.all和Promise.race方法的介紹(附代碼)

    JavaScript中Promise.all和Promise.race方法的介紹(附代碼):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于JavaScript中Promise.all和Promise.race方法的介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。Promise.all() 方法接受一個包含 Promise 對象或普通值的數(shù)組(或其它可迭代對象)作為參數(shù)
    推薦度:
    導(dǎo)讀JavaScript中Promise.all和Promise.race方法的介紹(附代碼):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于JavaScript中Promise.all和Promise.race方法的介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。Promise.all() 方法接受一個包含 Promise 對象或普通值的數(shù)組(或其它可迭代對象)作為參數(shù)

    本篇文章給大家?guī)淼膬?nèi)容是關(guān)于JavaScript中Promise.all和Promise.race方法的介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

    Promise.all() 方法接受一個包含 Promise 對象或普通值的數(shù)組(或其它可迭代對象)作為參數(shù),并返回一個 Promise。當所有 Promise 對象都 resolve 后,將所有 resolve 值以數(shù)組形式作為 Promise.all() resolve 的結(jié)果。如果其中之一的 Promise 被 reject,立即以第一個 reject 的值作為 Promise.all() reject 結(jié)果。

    在實際應(yīng)用中,如果需要從幾個接口獲取數(shù)據(jù),并且要在所有數(shù)據(jù)到達后才執(zhí)行某些操作,就可以使用Promise.all()。

    const p1 = new Promise(function (resolve) { setTimeout(resolve, 200, 1) })
    const p2 = Promise.resolve(2)
    const p3 = 3
    Promise.all([p1, p2, p3]).then(function (res) { console.log(res) }) // [1,2,3]

    以下是代碼實現(xiàn),需要一個計數(shù)器,來確認所有 promise 對象都已經(jīng) resolved,之后返回結(jié)果。需要一個數(shù)組,按順序記錄返回結(jié)果。如果使用類似 for (var i = 0; i < iterable[i]; i++) 的方式遍歷,為避免閉包只能傳入變量引用的問題,需要嵌套一層自執(zhí)行函數(shù)。這里使用 for ... in 循環(huán),使函數(shù)可以支持除數(shù)組外的其它可迭代對象,如數(shù)據(jù)結(jié)構(gòu) Set。

    const all = function (iterable) {
     return new Promise(function (resolve, reject) {
     let count = 0, ans = new Array(count)
     for (const i in iterable) {
     const v = iterable[i]
     if (typeof v === 'object' && typeof v.then === 'function') {
     v.then(function (res) {
     ans[i] = res
     if (--count === 0) resolve(ans)
     }, reject)
     count++
     } else {
     ans[i] = v
     }
     }
     })
    }
    
    const p1 = new Promise(function (resolve) { setTimeout(resolve, 200, 1) })
    const p2 = Promise.resolve(2)
    const p3 = 3
    all([p1, p2, p3]).then(function (res) { console.log(res) }) // [1,2,3]

    同 Promise.all(),Promise.race() 方法接受一個包含 Promise 對象或普通值的數(shù)組(或其它可迭代對象)作為參數(shù),并返回一個 Promise。一旦其中之一的 Promise 對象 resolve 以后,立即把 resolve 的值作為 Promise.race() resolve 的結(jié)果。如果其中之一的對象 reject,Promise.race也會立即 reject。

    在實際應(yīng)用中,如果可以從幾個接口獲取相同的數(shù)據(jù),哪個接口數(shù)據(jù)先到就先用哪個,就可以使用Promise.race(),所需時間等于其中最快的那個接口。下面是代碼:

    const race = function (iterable) {
     return new Promise(function (resolve, reject) {
     for (const i in iterable) {
     const v = iterable[i]
     if (typeof v === 'object' && typeof v.then === 'function') {
     v.then(resolve, reject)
     } else {
     resolve(v)
     }
     }
     })
    }
    const p1 = new Promise(function (resolve) { setTimeout(resolve, 200, 1) })
    const p2 = new Promise(function (resolve) { setTimeout(resolve, 100, 2) })
    race([p1, p2]).then(function (res) { console.log(res) }) // 2

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    JavaScript中Promise.all和Promise.race方法的介紹(附代碼)

    JavaScript中Promise.all和Promise.race方法的介紹(附代碼):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于JavaScript中Promise.all和Promise.race方法的介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。Promise.all() 方法接受一個包含 Promise 對象或普通值的數(shù)組(或其它可迭代對象)作為參數(shù)
    推薦度:
    標簽: 方法 介紹 all
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产日韩精品中文字无码| 久久97久久97精品免视看秋霞| 国产精品国产三级国产普通话| 2020最新久久久视精品爱 | 久久久精品无码专区不卡| 精品人伦一区二区三区潘金莲| 国产99视频精品专区| 国产精品无码a∨精品| 亚洲AV永久无码精品一区二区国产 | 精品无码人妻一区二区三区品| 精品国产一区二区三区2021| 国产精品欧美亚洲韩国日本| 自拍偷在线精品自拍偷| 久久精品国产99国产精品| 欧美大片日韩精品| 99在线精品免费视频九九视| 真实国产乱子伦精品一区二区三区| 99视频在线精品国自产拍亚瑟| 国产乱子伦精品无码码专区| 野狼精品社区| 亚洲AⅤ永久无码精品AA| 国产在AJ精品| 91亚洲精品麻豆| 亚洲精品国产成人99久久| 51午夜精品免费视频| 国产精品香港三级国产AV| 久久亚洲日韩精品一区二区三区| 日韩AV毛片精品久久久| 精品久久久久久国产三级 | 亚洲国产精品人人做人人爽| 国产精品熟女福利久久AV| 亚洲视频精品在线| 国内精品免费视频精选在线观看| WWW国产精品内射老师| 国产精品无码无在线观看| 国产精品兄妹在线观看麻豆| 欧美性videos高清精品| 在线精品动漫一区二区无广告| 欧美精品福利在线视频 | 精品国产三级a在线观看| 一本色道久久88综合日韩精品|