最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

async/await實(shí)現(xiàn)Promise.all()的方式

 更新時(shí)間:2022年12月19日 09:01:06   作者:不叫貓先生  
Promise.all() 方法接收一個(gè) promise 的 iterable 類型的輸入,并且只返回一個(gè)Promise實(shí)例,并且輸入的所有 promise 的 resolve 回調(diào)的結(jié)果是一個(gè)數(shù)組,對(duì)async/await實(shí)現(xiàn)Promise.all()相關(guān)知識(shí)感興趣的朋友一起看看吧

一、Promise.all()簡(jiǎn)介

Promise.all() 方法接收一個(gè) promise 的 iterable 類型(注:Array,Map,Set 都屬于 ES6 的 iterable 類型)的輸入,并且只返回一個(gè)Promise實(shí)例,并且輸入的所有 promise 的 resolve 回調(diào)的結(jié)果是一個(gè)數(shù)組。

  • Promise的 resolve 回調(diào)執(zhí)行是在所有輸入的 promise 的 resolve 回調(diào)都結(jié)束,或者輸入的 iterable 里沒有 promise 了的時(shí)候
  • Promise的 reject 回調(diào)執(zhí)行是只要任何一個(gè)輸入的 promise 的 reject 回調(diào)執(zhí)行或者輸入不合法的 promise 就會(huì)立即拋出錯(cuò)誤,并且只要有 reject 就會(huì)立即拋出的錯(cuò)誤信息。

二、async/await實(shí)現(xiàn)Promise.all()

先定義三個(gè)Promise實(shí)例對(duì)象,并放置于一個(gè)數(shù)組中

        let a = new Promise((res, rej) => {
			res(1)
		}).catch(err => console.log(err))
		let b = new Promise((res, rej) => {
			setTimeout(() => {
				rej(2)
			}, 2000)
		}).catch(err => console.log(err))
		let c = new Promise((res, rej) => {
			res(3)
		}).catch(err => console.log(err))
       const arr = [a, b, c]

1、方式一

-使用async/await,循環(huán)遍歷Promise實(shí)例對(duì)象的數(shù)組,并把每個(gè)Promise對(duì)象的結(jié)果放置于一個(gè)空數(shù)組中。

		async function bb() {
			let arr1 = [];
			try {
				for (let i = 0; i < arr.length; i++) {
					let h = await arr[i]
					arr1.push(h)
				}
			} catch (err) {
			}
			return arr1
		}
		
		bb().then(res => {
			console.log(res); //[1, undefined, 3]
		});

undefined是因?yàn)閍wait只處理成功時(shí)resolve(),不處理失敗異常,故返回undefined

2、方式二

該方面類似實(shí)現(xiàn)手寫Promise.acll(),等await拿到Promise結(jié)果然后count加1,知道count的數(shù)值等于數(shù)值的長(zhǎng)度在resolve()

      const all = (arr) => {
  			return new Promise((resolve, reject) => {
				let length = arr && arr.length
				let count = 0
				let result = []
				if (!arr || arr.length === 0) {
					resolve(result)
				}
				arr.forEach(async (item, index) => {
					try {
						const res = await item
						result[index] = res
						count++
						if (count === length ) {
							resolve(result)
						}
					} catch (err) {
						reject(err)
					}
				});
			})
		}

三、async/await與Promise.all()結(jié)合使用

因?yàn)镻romise.all()返回的也是Promise,所以await 后面可以跟Promise.all()

         function fn() {
			return new Promise((resolve, reject) => {
				resolve(Math.random())
			})
		}
		async function asyncFunc() {
			let result
			try {
				result = await Promise.all([fn(), fn()])
				console.log(result)
			} catch (err) {
				console.log(err, 'err')
			}
			return result
		}
      asyncFunc().then(res => { console.log(res, 'res') })

到此這篇關(guān)于async/await實(shí)現(xiàn)Promise.all()的文章就介紹到這了,更多相關(guān)async/await實(shí)現(xiàn)Promise.all()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js仿360開機(jī)效果

    js仿360開機(jī)效果

    這篇文章主要為大家詳細(xì)介紹了js仿360開機(jī)效果,并且封裝一個(gè)帶回調(diào)函數(shù)的緩動(dòng)動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • layui 實(shí)現(xiàn)加載動(dòng)畫以及非真實(shí)加載進(jìn)度的方法

    layui 實(shí)現(xiàn)加載動(dòng)畫以及非真實(shí)加載進(jìn)度的方法

    今天小編就為大家分享一篇layui 實(shí)現(xiàn)加載動(dòng)畫以及非真實(shí)加載進(jìn)度的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 詳解小程序退出頁(yè)面時(shí)清除定時(shí)器

    詳解小程序退出頁(yè)面時(shí)清除定時(shí)器

    這篇文章主要介紹了小程序退出頁(yè)面時(shí)清除定時(shí)器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 使用url-loader處理圖片等資源文件的方法步驟

    使用url-loader處理圖片等資源文件的方法步驟

    在Web開發(fā)中,處理圖片、字體等資源文件是一個(gè)常見的需求,傳統(tǒng)的做法是將這些資源文件放在靜態(tài)目錄中,然后在HTML或CSS中引用,然而,這種方法在構(gòu)建工具(如Webpack)中并不總是最理想的,為了解決這個(gè)問題,可以使用url-loader,需要的朋友可以參考下
    2025-04-04
  • JavaScript 懸浮窗口實(shí)現(xiàn)代碼

    JavaScript 懸浮窗口實(shí)現(xiàn)代碼

    主要是window.onscroll的運(yùn)用
    2009-02-02
  • sortable中el-table拖拽及點(diǎn)擊箭頭上下移動(dòng)row效果

    sortable中el-table拖拽及點(diǎn)擊箭頭上下移動(dòng)row效果

    這篇文章主要介紹了sortable中el-table拖拽及點(diǎn)擊箭頭上下移動(dòng)row效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • JSONP和批量操作功能的實(shí)現(xiàn)方法

    JSONP和批量操作功能的實(shí)現(xiàn)方法

    這篇文章主要介紹了JSONP和批量操作功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • JavaScript中AOP的實(shí)現(xiàn)與應(yīng)用

    JavaScript中AOP的實(shí)現(xiàn)與應(yīng)用

    這篇文章主要給大家介紹了關(guān)于JavaScript中AOP的實(shí)現(xiàn)與應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 詳解微信小程序應(yīng)用和頁(yè)面生命周期

    詳解微信小程序應(yīng)用和頁(yè)面生命周期

    生命周期是指一個(gè)對(duì)象從創(chuàng)建→>運(yùn)行>銷毀的整個(gè)階段,強(qiáng)調(diào)的是一個(gè)時(shí)間段,文中介紹了生命周期的分類和微信小程序應(yīng)用,需要的朋友可以參考下
    2022-08-08
  • javascript fullscreen全屏實(shí)現(xiàn)代碼

    javascript fullscreen全屏實(shí)現(xiàn)代碼

    用了實(shí)現(xiàn)打開一個(gè)滿屏的代碼
    2009-04-04

最新評(píng)論

驻马店市| 郁南县| 佛学| 瑞昌市| 余庆县| 遂溪县| 灵台县| 湾仔区| 马关县| 都昌县| 公主岭市| 聂荣县| 宜兴市| 永和县| 麻栗坡县| 噶尔县| 台东县| 玉林市| 右玉县| 乌兰县| 阿巴嘎旗| 赣榆县| 鄂托克旗| 沙河市| 西峡县| 贵德县| 嘉定区| 武威市| 依兰县| 儋州市| 化隆| 和顺县| 青田县| 繁昌县| 河南省| 安陆市| 山西省| 昌都县| 沂源县| 张家港市| 沙洋县|