JavaScript中如何在一個(gè)循環(huán)中等待示例代碼詳解
下面是如何使用for..of
循環(huán)來迭代一個(gè)數(shù)組并在循環(huán)內(nèi)等待:
const fun = (prop) => { return new Promise(resolve => { setTimeout(() => resolve(`done ${prop}`), 1000); }) } const go = async () => { const list = [1, 2, 3] for (const prop of list) { console.log(prop) console.log(await fun(prop)) } console.log('done all') } go()
你需要把循環(huán)放在一個(gè)異步函數(shù)中,然后你可以使用await
,循環(huán)會停止迭代,直到我們正在等待的承諾得到解決。
你可以用for...in循環(huán)做同樣的事情,對一個(gè)對象進(jìn)行迭代:
const fun = (prop) => { return new Promise(resolve => { setTimeout(() => resolve(`done ${prop}`), 1000); }) } const go = async () => { const obj = { a: 1, b: 2, c: 3 }; for (const prop in obj) { console.log(prop) console.log(await fun(prop)) } console.log('done all') } go()
你也可以使用while
或do..while
或for
循環(huán),也是這種結(jié)構(gòu)。
但是你不能用Array.forEach()
或Array.map()
來等待。
到此這篇關(guān)于在JavaScript中如何在一個(gè)循環(huán)中等待(附代碼示例)的文章就介紹到這了,更多相關(guān)js循環(huán)等待內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
分享一道筆試題[有n個(gè)直線最多可以把一個(gè)平面分成多少個(gè)部分]
今天地鐵上和一個(gè)同事閑聊,給我說的一道題,回來想了想,寫出來的,說來慚愧,我用的是行測方面數(shù)字推理里面的知識歸納出來的,當(dāng)然這個(gè)可以用遞歸寫出來,說說我的代碼,以及遞歸的思路2012-10-10javascript實(shí)現(xiàn)十秒鐘后注冊按鈕可點(diǎn)擊的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)十秒鐘后注冊按鈕可點(diǎn)擊的方法,涉及javascript時(shí)間及樣式操作的相關(guān)技巧,需要的朋友可以參考下2015-05-05JavaScript+html實(shí)現(xiàn)前端頁面滑動驗(yàn)證(2)
這篇文章主要為大家詳細(xì)介紹了JavaScript+html實(shí)現(xiàn)前端頁面滑動驗(yàn)證的第二種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06新浪微博字?jǐn)?shù)統(tǒng)計(jì) textarea字?jǐn)?shù)統(tǒng)計(jì)實(shí)現(xiàn)代碼
從新浪微博代碼里抄的,非常不錯(cuò),需要的朋友可以參考下。2011-08-08JavaScript裝飾器函數(shù)(Decorator)實(shí)例詳解
這篇文章主要介紹了JavaScript裝飾器函數(shù)(Decorator),結(jié)合實(shí)例形式分析了JavaScript裝飾器函數(shù)(Decorator)的功能、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2017-03-03JavaScript浮點(diǎn)數(shù)及運(yùn)算精度調(diào)整詳解
浮點(diǎn)數(shù)的精度問題不是JavaScript特有的,本文主要介紹了JavaScript浮點(diǎn)數(shù)及運(yùn)算精度調(diào)整詳解,有需要的朋友可以了解一下。2016-10-10