国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了async/await實(shí)現(xiàn)Promise.all()。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??個(gè)人主頁:不叫貓先生
???♂?作者簡介:專注于前端領(lǐng)域各種技術(shù),熱衷分享,期待你的關(guān)注。
??系列專欄:vue3從入門到精通
??個(gè)人簽名:不破不立

一、Promise.all()簡介

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ù)值的長度在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()文章來源地址http://www.zghlxwxcb.cn/news/detail-799792.html

         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()的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ES6 Promise/Async/Await使用

    Promise應(yīng)用 在工作中, 我們經(jīng)常會(huì)遇到用異步請(qǐng)求數(shù)據(jù), 查詢一個(gè)結(jié)果, 然后把返回的參數(shù)放入到下一個(gè)執(zhí)行的異步函數(shù)像這樣: 當(dāng)我們使用Promise后, 我們的程序就變成了這樣: 控制臺(tái)輸出如下: async/await應(yīng)用 看是不是簡潔很多了, 如果你不想使用這種鏈?zhǔn)秸{(diào)用, 也可以結(jié)合async/

    2024年02月12日
    瀏覽(21)
  • Promise, Generator, async/await的漸進(jìn)理解

    ???? 作為前端開發(fā)者的伙伴們,肯定對(duì)Promise,Generator,async/await非常熟悉不過了。Promise絕對(duì)是爛記于心,而async/await卻讓使大伙們感覺到爽(原來異步可以這么簡單)??苫仡^來梳理他們的關(guān)聯(lián)時(shí),你驚訝的發(fā)現(xiàn),他們是如此的密切相關(guān)。 ????? 我對(duì)他們?nèi)咧g的關(guān)聯(lián)

    2024年02月08日
    瀏覽(29)
  • 什么是Promise對(duì)象?它的狀態(tài)有哪些?如何使用Promise處理異步操作?以及 async、await

    什么是Promise對(duì)象?它的狀態(tài)有哪些?如何使用Promise處理異步操作?以及 async、await

    前端入門之旅:探索Web開發(fā)的奇妙世界 記得點(diǎn)擊上方或者右側(cè)鏈接訂閱本專欄哦 幾何帶你啟航前端之旅 歡迎來到前端入門之旅!這個(gè)專欄是為那些對(duì)Web開發(fā)感興趣、剛剛踏入前端領(lǐng)域的朋友們量身打造的。無論你是完全的新手還是有一些基礎(chǔ)的開發(fā)者,這里都將為你提供一

    2024年02月11日
    瀏覽(52)
  • 深入學(xué)習(xí)JavaScript系列(七)——Promise async/await generator

    深入學(xué)習(xí)JavaScript系列(七)——Promise async/await generator

    本篇屬于本系列第七篇 第一篇:#深入學(xué)習(xí)JavaScript系列(一)—— ES6中的JS執(zhí)行上下文 第二篇:# 深入學(xué)習(xí)JavaScript系列(二)——作用域和作用域鏈 第三篇:# 深入學(xué)習(xí)JavaScript系列(三)——this 第四篇:# 深入學(xué)習(xí)JavaScript系列(四)——JS閉包 第五篇:# 深入學(xué)習(xí)JavaScrip

    2023年04月08日
    瀏覽(33)
  • 前端異步編程全套:xmlhttprequest > ajax > promise > async/await

    同步與異步區(qū)別 同步:按順序,依次執(zhí)行,向服務(wù)器發(fā)送請(qǐng)求--客戶端做其他操作 異步:分別執(zhí)行,向服務(wù)器發(fā)送請(qǐng)求==同時(shí)執(zhí)行其他操作 原生xmlhttprequest 四步驟 創(chuàng)建ajax對(duì)象 設(shè)定數(shù)據(jù)的傳輸方式(get、post),打開連接open() 獲得響應(yīng)數(shù)據(jù) 屬性 描述 onreadystatechange 當(dāng)readysta

    2024年02月01日
    瀏覽(105)
  • ES6中Promise、Async/await解決回調(diào)地獄、Proxy代理

    1.Promise 作為一些場景必須要使用的一個(gè)對(duì)象,比如說我們要發(fā)送一個(gè)請(qǐng)求,但是在發(fā)送這個(gè)請(qǐng)求之前我們需要以另一個(gè)請(qǐng)求返回的結(jié)果中的一個(gè)數(shù)據(jù)作為這次請(qǐng)求的參數(shù),也就是說這個(gè)請(qǐng)求必須在另一個(gè)請(qǐng)求后面,當(dāng)然我們用setTimeout定時(shí)器寫一個(gè)延時(shí)函數(shù)也可以,但是當(dāng)有

    2024年02月12日
    瀏覽(24)
  • vue async await promise 等待異步接口執(zhí)行完畢再進(jìn)行下一步操作

    vue async await promise 等待異步接口執(zhí)行完畢再進(jìn)行下一步操作

    需求:上傳多個(gè)文件,每上傳一個(gè)文件異步請(qǐng)求一下后臺(tái)接口,并返回一個(gè)新文件名,等把所有的異步接口執(zhí)行成功后,將上傳已成功后新文件名數(shù)組得到再去更新業(yè)務(wù)數(shù)據(jù) uni-file-picker 文件上傳組件的配置 選擇文件后,上傳到服務(wù)器后端,一個(gè)一個(gè)的傳,等異步執(zhí)行完一下

    2024年02月12日
    瀏覽(29)
  • 前端常見面試題之異步(event loop, promise, async/await, 宏任務(wù)/微任務(wù))

    前端常見面試題之異步(event loop, promise, async/await, 宏任務(wù)/微任務(wù))

    從前到后,一行一行執(zhí)行 如果某一行執(zhí)行報(bào)錯(cuò),則停止下面代碼執(zhí)行 先把同步代碼執(zhí)行完,再執(zhí)行異步 示例: 輸出結(jié)果為: 可以看到,在執(zhí)行異步操作的過程中,主線程不會(huì)等待異步操作結(jié)束,而是繼續(xù)往下執(zhí)行后續(xù)的代碼,當(dāng)滿足條件時(shí)觸發(fā)異步操作的回調(diào)函數(shù)。 異步

    2024年02月01日
    瀏覽(30)
  • 【Vue框架】Vue2中axios發(fā)送請(qǐng)求—安裝axios、配置全局域名、傳遞參數(shù)、axios原理之Promise(什么是Promise、使用原因、基本使用、相關(guān)API、async與await使用)

    【Vue框架】Vue2中axios發(fā)送請(qǐng)求—安裝axios、配置全局域名、傳遞參數(shù)、axios原理之Promise(什么是Promise、使用原因、基本使用、相關(guān)API、async與await使用)

    官網(wǎng): https://www.axios-http.cn/ 1.1.1 安裝axios庫 安裝 axios 通信庫: npm install axios -S 1.1.2 在全局中引入axios庫 全局在main.js中引入axios: import axios from \\\'axios\\\' 1.1.3 掛在原型對(duì)象 Vue.prototype.$axios = axios; 將 axios 掛載到Vue原型對(duì)象中,實(shí)現(xiàn)數(shù)據(jù)共享,節(jié)約內(nèi)存空間。 此時(shí)在任何頁面都可

    2024年02月05日
    瀏覽(25)
  • 【js】js 異步機(jī)制詳解 Generator / Async / Promise

    【js】js 異步機(jī)制詳解 Generator / Async / Promise

    三種語法功能放在一起,是因?yàn)樗麄兌加邢嗨铺攸c(diǎn): 維護(hù)某種狀態(tài) 在未來恢復(fù)狀態(tài)并執(zhí)行 本文重點(diǎn)回答以下幾個(gè)問題: 為什么 Generator 和 Async 函數(shù)的 代碼執(zhí)行流 都可以簡化成樹形結(jié)構(gòu)? async 函數(shù)為什么返回一個(gè) promise?返回了怎樣一個(gè) promise? async 函數(shù)如何優(yōu)雅的轉(zhuǎn)換成

    2024年01月21日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包