javascript
存储过程循环遍历一个月的每一天的函数_JavaScript 循环:如何处理 async/await
同步循環(huán)
很久以前我寫的循環(huán)是這樣的:
后來(lái) JavaScript 提供了很多新的特性,現(xiàn)在我們會(huì)更傾向于用下面這種寫法:
在開發(fā)過程可能會(huì)有這么一種需求,我們需要在循環(huán)中異步處理 item,那么可以怎么做呢?
異步循環(huán)
如何在循環(huán)中使用 await?我們?cè)囍鴮懸粋€(gè)異步函數(shù),然后 await 每一次循環(huán)任務(wù)。
這個(gè)代碼會(huì)拋出一個(gè)錯(cuò)誤,因?yàn)槲覀儾荒茉谕椒椒ㄖ惺褂?await, processArray 確實(shí)是異步函數(shù),但是 array.forEach 里的匿名函數(shù)是同步的。
不要等待結(jié)果
要處理這個(gè)問題,我們可以把這個(gè)匿名函數(shù)定義為異步的:
但是這樣的話 forEach 方法就相當(dāng)于異步的了,不會(huì)等待遍歷完所有的 item,例如下面這段代碼:
將會(huì)輸出:
Done!123如果你不需要等待這個(gè)循環(huán)完成,這樣就已經(jīng)可以了。但是大部分情況我們還是需要等待這個(gè)循環(huán)完成才進(jìn)行之后的操作。
串行遍歷
要等待所有的結(jié)果返回,我們還是要回到老式的 for 循環(huán)寫法:
最后的結(jié)果符合我們的預(yù)期:
123Done!上面這段的遍歷代碼是串行執(zhí)行的,我們也可以把它換成并行的。
并行遍歷
我們可以稍微更改上面的代碼來(lái)編程并行的:
(注意:對(duì)于特別大的數(shù)組不建議使用這種寫法,太多的并行任務(wù)會(huì)加重 CPU 和內(nèi)存的負(fù)荷)
總結(jié)
以上是生活随笔為你收集整理的存储过程循环遍历一个月的每一天的函数_JavaScript 循环:如何处理 async/await的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平板电脑可以插u盘吗_有手机还需要平板电
- 下一篇: 吉林大学计算机与科学专业排名,吉林大学专