<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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方法的介紹(附代碼)

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

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

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

        本篇文章給大家帶來的內容是關于JavaScript中Promise.all和Promise.race方法的介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

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

        在實際應用中,如果需要從幾個接口獲取數據,并且要在所有數據到達后才執行某些操作,就可以使用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]

        以下是代碼實現,需要一個計數器,來確認所有 promise 對象都已經 resolved,之后返回結果。需要一個數組,按順序記錄返回結果。如果使用類似 for (var i = 0; i < iterable[i]; i++) 的方式遍歷,為避免閉包只能傳入變量引用的問題,需要嵌套一層自執行函數。這里使用 for ... in 循環,使函數可以支持除數組外的其它可迭代對象,如數據結構 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 對象或普通值的數組(或其它可迭代對象)作為參數,并返回一個 Promise。一旦其中之一的 Promise 對象 resolve 以后,立即把 resolve 的值作為 Promise.race() resolve 的結果。如果其中之一的對象 reject,Promise.race也會立即 reject。

        在實際應用中,如果可以從幾個接口獲取相同的數據,哪個接口數據先到就先用哪個,就可以使用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

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

        文檔

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

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成年男女免费视频网站| 大妹子影视剧在线观看全集免费 | 无码专区AAAAAA免费视频| 久久精品国产亚洲av高清漫画| 成人影片一区免费观看| 中文字幕不卡免费视频| 无码日韩精品一区二区三区免费| 亚洲mv国产精品mv日本mv| 亚洲国产成人久久77| 国产亚洲一卡2卡3卡4卡新区| 免费无码国产在线观国内自拍中文字幕 | 日韩高清在线免费看| 无码成A毛片免费| 亚洲色精品VR一区区三区| 99视频在线精品免费观看6| 日本精品久久久久久久久免费 | 亚洲av成人一区二区三区观看在线 | 亚洲经典在线中文字幕| 岛国av无码免费无禁网站| 在线观看黄片免费入口不卡| 亚洲另类无码专区丝袜| 亚洲AV色香蕉一区二区| 免费一级毛片在线播放不收费| 久久一本岛在免费线观看2020| 中文字幕亚洲码在线| 亚洲精品免费在线观看| 亚洲福利中文字幕在线网址| 免费无码又爽又刺激毛片| 一级毛片**不卡免费播| 黄 色一级 成 人网站免费| 亚洲欧洲免费无码| 亚洲美女大bbbbbbbbb| 亚洲成AV人片在线观看无| 久久亚洲精品无码观看不卡| 四虎影视免费永久在线观看| 久久久久国产精品免费免费搜索| 国产成人精品免费视频软件| 国产精品免费一级在线观看| 免费福利在线播放| 99热在线精品免费全部my| 99久久国产精品免费一区二区|