精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Promise.any 的作用,如何自己實現一個 Promise.any

開發 項目管理
來自世界各地的用戶訪問網站,如果你有多臺服務器,則盡量使用響應速度最快的服務器,在這種情況下,可以使用 Promise.any() 方法從最快的服務器接收響應.

[[396443]]

本文轉載自微信公眾號「三分鐘學前端」,作者sisterAn。轉載本文請聯系三分鐘學前端公眾號。

引言

本文從五個方面介紹 Promise.any :

  • Promise.any 的作用
  • Promise.any 應用場景
  • Promise.any vs Promise.all
  • Promise.any vs Promise.race
  • 手寫 Promise.any 實現

下面正文開始

Promise.any

Promise.any() 是 ES2021 新增的特性,它接收一個 Promise 可迭代對象(例如數組),

  • 只要其中的一個 promise 成功,就返回那個已經成功的 promise
  • 如果可迭代對象中沒有一個 promise 成功(即所有的 promises 都失敗/拒絕),就返回一個失敗的 promise 和 AggregateError 類型的實例,它是 Error 的一個子類,用于把單一的錯誤集合在一起
  1. const promises = [ 
  2.   Promise.reject('ERROR A'), 
  3.   Promise.reject('ERROR B'), 
  4.   Promise.resolve('result'), 
  5.  
  6. Promise.any(promises).then((value) => { 
  7.   console.log('value: ', value) 
  8. }).catch((err) => { 
  9.   console.log('err: ', err) 
  10. }) 
  11.  
  12. // value:  result 

如果所有傳入的 promises 都失敗:

  1. const promises = [ 
  2.   Promise.reject('ERROR A'), 
  3.   Promise.reject('ERROR B'), 
  4.   Promise.reject('ERROR C'), 
  5.  
  6. Promise.any(promises).then((value) => { 
  7.   console.log('value:', value) 
  8. }).catch((err) => { 
  9.   console.log('err:', err) 
  10.   console.log(err.message) 
  11.   console.log(err.name
  12.   console.log(err.errors) 
  13. }) 
  14.  
  15. // err:AggregateError: All promises were rejected 
  16. // All promises were rejected 
  17. // AggregateError 
  18. // ["ERROR A""ERROR B""ERROR C"

Promise.any 應用場景

  • 從最快的服務器檢索資源

來自世界各地的用戶訪問網站,如果你有多臺服務器,則盡量使用響應速度最快的服務器,在這種情況下,可以使用 Promise.any() 方法從最快的服務器接收響應

  1. function getUser(endpoint) { 
  2.   return fetch(`https://superfire.${endpoint}.com/users`) 
  3.     .then(response => response.json()); 
  4.  
  5. const promises = [getUser("jp"), getUser("uk"), getUser("us"), getUser("au"), getUser("in")] 
  6.  
  7. Promise.any(promises).then(value => { 
  8.   console.log(value) 
  9. }).catch(err => { 
  10.   console.log(err); 
  11. }) 
  • 顯示第一張已加載的圖片(來自MDN)

在這個例子,我們有一個獲取圖片并返回 blob 的函數,我們使用 Promise.any() 來獲取一些圖片并顯示第一張有效的圖片(即最先 resolved 的那個 promise)

  1. function fetchAndDecode(url) { 
  2.   return fetch(url).then(response => { 
  3.     if(!response.ok) { 
  4.       throw new Error(`HTTP error! status: ${response.status}`); 
  5.     } else { 
  6.       return response.blob(); 
  7.     } 
  8.   }) 
  9.  
  10. let coffee = fetchAndDecode('coffee.jpg'); 
  11. let tea = fetchAndDecode('tea.jpg'); 
  12.  
  13. Promise.any([coffee, tea]).then(value => { 
  14.   let objectURL = URL.createObjectURL(value); 
  15.   let image = document.createElement('img'); 
  16.   image.src = objectURL; 
  17.   document.body.appendChild(image); 
  18. }) 
  19. .catch(e => { 
  20.   console.log(e.message); 
  21. }); 

Promise.any vs Promise.all

Promise.any() 和 Promise.all() 從返回結果來看,它們 彼此相反 :

  • Promise.all() :任意一個 promise 被 reject ,就會立即被 reject ,并且 reject 的是第一個拋出的錯誤信息,只有所有的 promise 都 resolve 時才會 resolve 所有的結果
  • Promise.any() :任意一個 promise 被 resolve ,就會立即被 resolve ,并且 resolve 的是第一個正確結果,只有所有的 promise 都 reject 時才會 reject 所有的失敗信息

另外,它們又有不同的 重點 :

  • Promise.all() 對所有實現都感興趣。相反的情況(至少一個拒絕)導致拒絕。
  • Promise.any() 對第一個實現感興趣。相反的情況(所有拒絕)導致拒絕。

Promise.any vs Promise.race

Promise.any() 和 Promise.race() 的 關注點 不一樣:

  • Promise.any() :關注于 Promise 是否已經解決
  • Promise.race() :主要關注 Promise 是否已經解決,無論它是被解決還是被拒絕

手寫 Promise.any 實現

Promise.any 只要傳入的 promise 有一個是 fullfilled 則立即 resolve 出去,否則將所有 reject 結果收集起來并返回 AggregateError

  1. MyPromise.all = function(promises){ 
  2.   return new Promise((resolve,reject)=>{ 
  3.     promises = Array.isArray(promises) ? promises : [] 
  4.     let len = promises.length 
  5.     // 用于收集所有 reject  
  6.     let errs = [] 
  7.     // 如果傳入的是一個空數組,那么就直接返回 AggregateError 
  8.     if(len === 0) return reject(new AggregateError('All promises were rejected')) 
  9.     promises.forEach((promise)=>{ 
  10.       promise.then(value=>{ 
  11.         resolve(value) 
  12.       },err=>{ 
  13.         len-- 
  14.         errs.push(err) 
  15.         if(len === 0){ 
  16.           reject(new AggregateError(errs)) 
  17.         } 
  18.       }) 
  19.     }) 
  20.   }) 

 

來自:https://github.com/sisterAn/blog

 

責任編輯:武曉燕 來源: 三分鐘學前端
相關推薦

2020-12-15 08:01:24

Promise參數ES6

2021-04-27 08:31:37

Promisereject信息

2021-03-15 08:15:42

ES2021語言開發

2021-04-29 08:28:24

架構參數傳遞

2020-09-24 11:46:03

Promise

2025-06-13 09:40:45

2024-05-20 01:10:00

Promise變量

2020-08-31 08:11:01

V8 8.5Promise前端

2018-03-13 16:04:45

Promise執行順序

2018-07-03 15:20:36

Promise函數借錢

2023-09-15 15:31:23

異步編程Promise

2025-07-11 08:09:07

Node.jsAPI權限

2017-05-11 20:20:59

JavascriptPromiseWeb

2020-07-29 17:35:08

Promise源碼前端

2022-09-28 12:23:36

Promise代碼

2021-09-02 12:07:48

Swift 監聽系統Promise

2021-03-09 07:37:42

技術Promise測試

2022-09-15 07:54:59

awaitPromise

2017-04-10 15:57:10

AsyncAwaitPromise

2022-01-21 08:50:15

Promise任務隊列前端
點贊
收藏

51CTO技術棧公眾號

无码人妻丰满熟妇区五十路百度| 国产精品区二区三区日本| 日本少妇xxxxx| 日韩欧乱色一区二区三区在线 | 中文字幕xxx| 欧美xxxx做受欧美护士| 亚洲人成7777| 精品视频第一区| 一区二区视频免费观看| 欧美日韩网站| 亚洲免费电影在线观看| 日本77777| 忘忧草在线日韩www影院| 国产精品精品国产色婷婷| 国产精品99久久久久久久| 国产精品第5页| 综合久久99| 精品丝袜一区二区三区| 黄色a级三级三级三级| 天堂√中文最新版在线| 自拍偷拍亚洲欧美日韩| 免费亚洲精品视频| 性生交大片免费看女人按摩| 日韩精品色哟哟| 久久免费精品日本久久中文字幕| 久久丫精品忘忧草西安产品| 国产三级精品三级在线观看国产| 欧美日韩一区二区三区四区五区| 日韩精品在线观看av| 日本美女在线中文版| 99久久精品一区| 亚洲va国产va天堂va久久| 中文人妻av久久人妻18| 99精品国产一区二区青青牛奶| www.日韩av.com| 女女互磨互喷水高潮les呻吟| 高清日韩欧美| 日韩美女一区二区三区四区| 黄大色黄女片18第一次| 亚洲人免费短视频| 色综合中文综合网| 你懂的av在线| av午夜在线观看| 一区二区三区精品在线观看| 中文字幕第一页亚洲| 在线免费看黄网站| 中文字幕精品综合| 日韩中文字幕一区| 无码精品在线观看| 99riav一区二区三区| 99re在线观看视频| 国产suv精品一区二区69| 久久国产剧场电影| 国产精品一区二区久久国产| 免费在线观看av的网站| 三级欧美在线一区| 国产精品成人aaaaa网站| 在线精品免费视| 视频一区二区不卡| 国产精品电影网| 最近中文字幕在线观看| 日本aⅴ亚洲精品中文乱码| 国产精品扒开腿做爽爽爽男男 | 国模冰冰炮一区二区| 精品久久中文字幕久久av| a级黄色小视频| 中文不卡1区2区3区| 欧美丝袜美女中出在线| www.日日操| 精品九九久久| 91精品国产91久久综合桃花 | 波多野结衣高清在线| 秋霞国产午夜精品免费视频| 国产精品视频自在线| 国产精品国产一区二区三区四区| 久久97超碰国产精品超碰| 亚洲一区二区三区777| 不卡视频在线播放| www.视频一区| 欧洲国产精品| 午夜看片在线免费| 一级特黄大欧美久久久| 国产极品尤物在线| 视频在线日韩| 日韩三区在线观看| 久久人妻一区二区| 国产一区二区三区四区大秀| 在线精品国产成人综合| 成人在线观看高清| 日韩视频二区| 国产精品丝袜白浆摸在线| 国产视频手机在线观看| 99久久er热在这里只有精品15| 欧洲精品一区色| 免费观看成人高潮| 亚洲成a人v欧美综合天堂下载| 国产xxxxx在线观看| 99国内精品久久久久| 亚洲国产精品va在线观看黑人| 偷拍夫妻性生活| 亚洲字幕久久| 日韩暖暖在线视频| 精品国产乱码一区二区三| 久久久99精品久久| 国产激情片在线观看| 欧美××××黑人××性爽| 欧美v日韩v国产v| 亚洲欧美va天堂人熟伦| 亚洲第一毛片| 91免费视频国产| 久草在线免费福利资源| 亚洲在线免费播放| 九九精品久久久| 在线看成人短视频| 欧美黑人国产人伦爽爽爽| 91porny九色| 成人美女视频在线看| 日本免费在线视频观看| 欧美xxxx做受欧美护士| 日韩av综合网站| 国产va在线播放| 美女一区二区久久| 青青影院一区二区三区四区| 懂色av一区| 91精品国产欧美一区二区成人| av网站免费在线看| 午夜亚洲精品| 精品一区二区视频| 丁香花在线高清完整版视频| 正在播放一区二区| 色欲狠狠躁天天躁无码中文字幕| 一区二区在线| 国产精品视频一区二区三区四| 殴美一级特黄aaaaaa| 91亚洲国产成人精品一区二区三 | 一区二区三区资源| 欧美三级理论片| 网友自拍区视频精品| 欧美精品18videos性欧美| 一区二区三区播放| 久久久一区二区| 日韩美女爱爱视频| 二区三区精品| www.欧美精品| 黄色大全在线观看| 国产日韩精品一区二区三区| 97国产在线播放| 亚洲日本va| 久久精品国产96久久久香蕉| 蜜臀尤物一区二区三区直播| 不卡一卡二卡三乱码免费网站| 亚洲欧美一区二区原创| 四虎4545www精品视频| 日韩成人av在线播放| 久久精品国产亚洲av无码娇色| 国产制服丝袜一区| 中文字幕一区二区三区在线乱码| 日韩国产91| 色阁综合伊人av| 中文字幕天堂在线| 久久精品视频一区| 成人亚洲视频在线观看| 日韩影视在线观看| 国产成人精品综合久久久| 日本亚洲欧美| 色婷婷综合久久久| 少妇大叫太粗太大爽一区二区| 亚洲人成久久| 亚洲淫片在线视频| 不卡av免费观看| 亚洲国产女人aaa毛片在线| 久久久久99精品成人片毛片| 国产成人在线色| 久久久久久人妻一区二区三区| 欧美网色网址| 日本不卡免费高清视频| 久久手机免费观看| 欧美午夜理伦三级在线观看| 非洲一级黄色片| 捆绑紧缚一区二区三区视频| 97在线免费视频观看| 57pao国产一区二区| 97久久精品国产| 伦理片一区二区三区| 在线观看国产一区二区| 五月天免费网站| 粉嫩蜜臀av国产精品网站| 久久视频这里有精品| 妖精视频一区二区三区免费观看| 国产成人精彩在线视频九色| 不卡在线视频| 在线播放国产精品二区一二区四区| 青青操国产视频| 91香蕉国产在线观看软件| 97公开免费视频| 在线观看国产精品入口| 91久久极品少妇xxxxⅹ软件| 东京一区二区| www亚洲欧美| 蜜桃视频久久一区免费观看入口| 精品久久久久久久大神国产| 亚洲一区 欧美| 狠狠v欧美v日韩v亚洲ⅴ| 国产一线二线三线女| 欧美激情在线免费| 亚洲最大的网站| 老色鬼在线视频| 日韩乱码在线视频| 亚洲精品国产精| 色婷婷综合久久久久中文一区二区| а天堂中文在线资源| 丰满少妇久久久久久久| 亚洲男人天堂色| 日韩亚洲在线| 综合久久国产| 伊人久久大香线蕉| aa成人免费视频| 日韩精品免费观看视频| 2020国产精品视频| 成人日批视频| 国产亚洲激情视频在线| 亚洲国产www| 色国产综合视频| 精品成人免费视频| 亚洲欧洲韩国日本视频| 欧美丰满少妇人妻精品| 国产美女av一区二区三区| 熟女人妇 成熟妇女系列视频| 欧美日韩一区二区三区四区在线观看 | 久久爱一区二区| 久久亚区不卡日本| 亚洲欧美综合视频| 日韩av不卡一区二区| 日本丰满少妇xxxx| 欧美福利视频| 水蜜桃亚洲精品| 欧美色图五月天| 高清一区二区三区视频| 亚洲伦理网站| 日本在线精品视频| 中文字幕人成乱码在线观看| 欧美激情亚洲激情| a级网站在线播放| 色婷婷成人综合| 9色在线视频| 亚洲一级片在线看| 你懂的视频在线| 日韩国产精品一区| 国产高清免费观看| 日韩欧美国产精品一区| 国产精品高潮呻吟久久久| 欧美日韩久久久久久| 中文字幕人成人乱码亚洲电影| 一本一道综合狠狠老| 色网站在线播放| 精品国产精品自拍| 天天综合网入口| 亚洲一区成人在线| 久久久久性色av无码一区二区| 亚洲精品乱码久久久久久日本蜜臀| 人妻互换一区二区激情偷拍| 国产精品欧美久久久久一区二区| 国产免费看av| 国产精品美女久久久久久 | 青青视频在线免费观看| 一本到不卡精品视频在线观看| 精品国产乱码一区二区| 精品久久久在线观看| 日韩三级一区二区| 色综合天天综合狠狠| 特级做a爱片免费69| 欧美丝袜一区二区三区| 久久人妻免费视频| 在线观看免费亚洲| 一级黄色片在线播放| 日韩精品一区二区在线观看| 国产香蕉在线观看| 亚洲精品小视频在线观看| 久草在线网址| 久青草国产97香蕉在线视频| 青草视频在线免费直播| 久久久久久久久亚洲| 小视频免费在线观看| 国产精品午夜视频| 国产精品va视频| 国产精品久久国产三级国电话系列| 久久动漫网址| 欧美成人dvd在线视频| 欧美mv日韩| www.日本少妇| 三级成人在线视频| 国产欧美一区二| 91在线国产福利| 懂色av粉嫩av浪潮av| 一区二区三区在线视频免费观看| 豆国产97在线 | 亚洲| 欧美亚洲国产一卡| www.日日夜夜| 亚洲精品永久免费| 欧美精品hd| 国产999在线观看| 最新亚洲国产| 国严精品久久久久久亚洲影视| 精品视频网站| 日韩第一页在线观看| 亚洲黄色高清| 日本人视频jizz页码69| 成人自拍视频在线| 成年人看的免费视频| 亚洲国产aⅴ天堂久久| 亚洲av中文无码乱人伦在线视色| 日韩视频在线一区二区| 男人天堂网在线| 欧美激情精品在线| 国产人与zoxxxx另类91| 久久天天狠狠| 欧美日本不卡| 亚洲国产高清av| 久久先锋影音av| 欧美日韩大片在线观看| 在线日韩av片| 色哟哟中文字幕| 欧美激情精品久久久久久大尺度 | 欧美精品电影免费在线观看| 精品176极品一区| 九九九热999| 国产精品va| 亚洲欧美自拍另类日韩| 久久久三级国产网站| 精品处破女学生| 在线观看91av| 成年人视频网站在线| 国产aaa精品| 久久精品论坛| 400部精品国偷自产在线观看 | 波多野结衣在线观看一区二区三区| 日韩精品综合在线| 国产米奇在线777精品观看| 色欲狠狠躁天天躁无码中文字幕| 色综合婷婷久久| 亚州男人的天堂| 欧美情侣性视频| 国产一区二区三区免费观看在线| 亚洲欧美日韩国产成人综合一二三区 | 另类调教123区| 中文字幕伦理片| 一本大道久久a久久精品综合 | 日韩精品福利在线| 色呦呦呦在线观看| 国产精品国产三级欧美二区| 综合日韩在线| 中文字幕第三区| 国产精品久久久久久久裸模| 一级成人免费视频| 在线视频免费一区二区| 美女福利一区二区三区| 青青成人在线| 免费在线观看不卡| 精品视频第一页| 欧美麻豆精品久久久久久| 久草中文在线观看| 91久久精品国产91性色| 99久久夜色精品国产亚洲1000部| 99re精彩视频| 一区二区三区四区在线| 亚洲欧美激情另类| 性欧美xxxx视频在线观看| 天堂俺去俺来也www久久婷婷 | 91精品国产一区二区三区蜜臀| 黄色在线免费| 91系列在线观看| 狠狠色综合网| 中字幕一区二区三区乱码| 欧美色精品天天在线观看视频| √新版天堂资源在线资源| 国产精品一区二区性色av| 欧美福利视频| 捆绑裸体绳奴bdsm亚洲| 色综合久久久网| 国产天堂素人系列在线视频| 成人做爽爽免费视频| 欧美成人久久| 好吊一区二区三区视频| 欧美日韩在线直播| 黄色成人在线观看| 国产一区二区三区黄| 久久精品日韩欧美| 国产精品久久久精品四季影院| 欧美岛国在线观看| 日韩激情电影免费看| 在线观看日本一区| 成人久久视频在线观看| 九九精品免费视频| 日韩一区二区三区国产| 精品网站aaa| 91视频免费版污| 亚洲另类中文字| av电影在线观看一区二区三区| 99在线国产| 日韩av高清在线观看|