vue在?for?循環(huán)里使用異步調(diào)用?async/await的方法
vue項(xiàng)目中如何在 for 循環(huán)里面使用異步調(diào)用 async/await
問(wèn)題描述
在使用函數(shù)的async/await異步調(diào)用時(shí)候,放在正常函數(shù)中單個(gè)調(diào)用時(shí)沒(méi)有問(wèn)題的,但是await放在forEach()循環(huán)里面就會(huì)報(bào)錯(cuò)
async detailData (newVal) {
newVal.forEach(line => {
var list = await infoStore(line.id)
})
}報(bào)錯(cuò) await is a reserved word

這是因?yàn)閍sync和await必須成對(duì)出現(xiàn),如果調(diào)用await的地方無(wú)法正確匹配到async則會(huì)報(bào)錯(cuò),
forEach屬于并發(fā)操作,在 forEach 循環(huán)內(nèi)調(diào)用異步函數(shù)時(shí),下一個(gè)循環(huán)并不會(huì)等到上個(gè)循環(huán)結(jié)束后再被調(diào)用,所以以上調(diào)用方式才會(huì)報(bào)錯(cuò)。
解決方案
以下將介紹forEach和其他循環(huán)中async/await異步調(diào)用方法
1. forEach 循環(huán)中處理
async detailData (newVal) {
await Promise.all(
newVal.forEach(async line => {
var list = await infoStore(line.id)
})
)
}2. for of 中處理
async detailData (newVal) {
for (let item of newVal){
var list = await infoStore(item.id)
}
}3. for 循環(huán)中處理
async detailData (newVal) {
for (var i=0; i<newVal.length; i++) {
var list = await infoStore(newVal[i].id)
}
}4. map 中處理
async detailData (newVal) {
let list = newVal.map(async item => {
return await infoStore(item.id)
})
// 這時(shí)候 list 拿到的值還是promise數(shù)據(jù)
// 需要再使用promise.all()處理一下,最終listEnd就是Promise里面的數(shù)據(jù)
let listEnd = await Promise.all(list)
}以上是個(gè)人經(jīng)驗(yàn),希望對(duì)大家有所幫助!
如果對(duì)如何獲取Promise對(duì)象中的PromiseResult中的數(shù)據(jù)還是不明白,為什么要用async/await異步調(diào)用方法來(lái)獲?。靠梢詤⒖剂硗庖黄恼拢?br />如何獲取Promise對(duì)象中的PromiseResult中的數(shù)據(jù)
到此這篇關(guān)于vue 如何在 for 循環(huán)里面使用異步調(diào)用 async/await的文章就介紹到這了,更多相關(guān)vue for循環(huán)異步調(diào)用 async/await內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用element Table表格獲取勾選的數(shù)據(jù)
通過(guò)實(shí)例介紹了如何使用elementTable表格組件獲取勾選的數(shù)據(jù),總結(jié)個(gè)人經(jīng)驗(yàn),旨在為讀者提供參考和學(xué)習(xí)資源2025-12-12
vue el-table字段點(diǎn)擊出現(xiàn)el-input輸入框,失焦保存方式
這篇文章主要介紹了vue el-table字段點(diǎn)擊出現(xiàn)el-input輸入框,失焦保存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
vue如何實(shí)現(xiàn)el-select下拉選項(xiàng)的懶加載
這篇文章主要介紹了vue如何實(shí)現(xiàn)el-select下拉選項(xiàng)的懶加載,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
簡(jiǎn)單了解vue 插值表達(dá)式Mustache
這篇文章主要介紹了vue 插值表達(dá)式Mustache的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
Vue3實(shí)現(xiàn)跨標(biāo)簽頁(yè)通信的四種方式
在Vue應(yīng)用中,跨標(biāo)簽頁(yè)的通信通常涉及到兩個(gè)或多個(gè)瀏覽器標(biāo)簽頁(yè)之間的信息共享,由于每個(gè)標(biāo)簽頁(yè)或窗口都是獨(dú)立的JavaScript執(zhí)行環(huán)境,它們不能直接通過(guò)Vue或其他JavaScript庫(kù)來(lái)直接相互通信,但是,有一些方法可以實(shí)現(xiàn)這種跨標(biāo)簽頁(yè)的通信,以下是一些常用的跨標(biāo)簽頁(yè)通信方法2025-03-03
Vite配置優(yōu)雅的code?spliiting代碼分割詳解
這篇文章主要為大家介紹了Vite配置優(yōu)雅的code?spliiting代碼分割詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Vue使用new?Blob()實(shí)現(xiàn)不同類型的文件下載功能
這篇文章主要給大家介紹了關(guān)于Vue使用new?Blob()實(shí)現(xiàn)不同類型的文件下載功能的相關(guān)資料,在Vue項(xiàng)目中,經(jīng)常用Blob二進(jìn)制進(jìn)行文件下載功能,需要的朋友可以參考下2023-07-07

