欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript?中的異步?forEach

 更新時(shí)間:2023年07月08日 11:44:15   作者:跡憶客  
這篇文章主要介紹了JavaScript異步forEach的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在本篇文章中,我們將看看我們是否可以在 JavaScript 的 forEach 循環(huán)中使用異步。 有哪些選擇?

JavaScript 中的異步 forEach

異步編程不適用于 Array.prototype.forEach。 它不適用于 async-await,就像它不適用于 promises 一樣。

const employees = await this.getEmployees();
// BAD
await employees.forEach(async (employee) => {
  await giveBonusToEmployee(employee);
});
await sendEmail('All bonuses sent');

這里有一些問(wèn)題:

  • 未處理迭代器函數(shù)返回的 Promise; 因此,如果其中一個(gè)出錯(cuò),也不會(huì)被注意到。 如果節(jié)點(diǎn) 10 上沒有注冊(cè) unhandledrejection 偵聽器,進(jìn)程就會(huì)崩潰!
  • 所有獎(jiǎng)金是同時(shí)分配的,而不是順序分配的,因?yàn)?forEach 不會(huì)等待每個(gè)承諾一個(gè)接一個(gè)地實(shí)現(xiàn)。 結(jié)果,循環(huán)在所有獎(jiǎng)金發(fā)放之前就結(jié)束了。
  • 結(jié)果,在任何獎(jiǎng)勵(lì)完全發(fā)放之前,sendEmail() 發(fā)送了電子郵件。 也許一個(gè)也不會(huì)發(fā)出; 他們可能都會(huì)拋出錯(cuò)誤!

以下是我們可以為此實(shí)施的解決方案:

1.連續(xù)處理每個(gè)獎(jiǎng)金。 你可以使用 for…of 構(gòu)造,因?yàn)?JavaScript 支持異步等待。

for (const employee of employees) {
  await giveBonusToEmployee(employee);
}

在繼續(xù)下一個(gè)獎(jiǎng)金之前,此循環(huán)將等待前一個(gè)獎(jiǎng)勵(lì)發(fā)出。 雖然它會(huì)比我們需要的更冗長(zhǎng),但您也可以在這種情況下使用典型的 for(…;…;…) 。

1.并行處理所有獎(jiǎng)金。

await Promise.all(employees.map(async (employee) => {
  await giveBonusToEmployee(employee);
}));

如果順序無(wú)關(guān)緊要,則可以更快地同時(shí)分析所有員工。 這將立即開始發(fā)放所有獎(jiǎng)金,但在發(fā)送所有獎(jiǎng)金之前不會(huì)發(fā)送電子郵件()。

for 和 while 循環(huán)自然地與 async-await 一起運(yùn)行,因?yàn)樗鼈兪窃谠己瘮?shù)體中編寫的。 但是,當(dāng)您調(diào)用另一個(gè)函數(shù)時(shí),僅當(dāng)被調(diào)用函數(shù)返回一個(gè)承諾并處理該承諾時(shí),才能使用 async-await。

因?yàn)?.reduce().map() 都會(huì)產(chǎn)生一個(gè)我們可能等待的承諾或一系列承諾,所以我們可以使用它們。

但是,大多數(shù)數(shù)組方法不返回承諾或允許將承諾從一個(gè)調(diào)用傳遞到另一個(gè)調(diào)用,因此無(wú)法異步使用它們。 因此,異步代碼不能在數(shù)組內(nèi)部使用,例如 array.some()array.filter()。

到此這篇關(guān)于JavaScript 異步 forEach的文章就介紹到這了,更多相關(guān)js異步 forEach內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • css+html+js實(shí)現(xiàn)五角星評(píng)分

    css+html+js實(shí)現(xiàn)五角星評(píng)分

    這篇文章主要為大家詳細(xì)介紹了css+html+js實(shí)現(xiàn)五角星評(píng)分,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • JQuery 表格操作(交替顯示、拖動(dòng)表格行、選擇行等)

    JQuery 表格操作(交替顯示、拖動(dòng)表格行、選擇行等)

    JQuery 表格操作包括交替顯示、拖動(dòng)表格行、選擇行等功能,大家可以參考下。
    2009-07-07
  • JS實(shí)現(xiàn)紙牌發(fā)牌動(dòng)畫

    JS實(shí)現(xiàn)紙牌發(fā)牌動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)紙牌發(fā)牌動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • es6和commonJs的區(qū)別解析

    es6和commonJs的區(qū)別解析

    這篇文章主要介紹了es6和commonJs的區(qū)別,ES6的模塊化規(guī)范更加先進(jìn)、靈活,能夠適應(yīng)更多的應(yīng)用場(chǎng)景,而CommonJS則更加簡(jiǎn)單、易用,廣泛應(yīng)用于Node.js開發(fā)中,在實(shí)際應(yīng)用中,可以根據(jù)具體情況選擇使用不同的模塊化方案,需要的朋友可以參考下
    2023-03-03
  • 微信小程序獲取用戶綁定手機(jī)號(hào)方法示例

    微信小程序獲取用戶綁定手機(jī)號(hào)方法示例

    這篇文章主要給大家介紹了關(guān)于微信小程序如何獲取用戶綁定手機(jī)號(hào)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • JavaScript-定時(shí)器0~9抽獎(jiǎng)系統(tǒng)詳解(代碼)

    JavaScript-定時(shí)器0~9抽獎(jiǎng)系統(tǒng)詳解(代碼)

    這篇文章主要介紹了 JavaScript-定時(shí)器0~9抽獎(jiǎng)系統(tǒng),通過(guò)代碼實(shí)例說(shuō)明函數(shù)調(diào)用的整體操作,具體步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • 利用try-catch判斷變量是已聲明未聲明還是未賦值

    利用try-catch判斷變量是已聲明未聲明還是未賦值

    這篇文章主要介紹了利用try-catch判斷變量是已聲明未賦值還是未聲明,需要的朋友可以參考下
    2014-03-03
  • 理解javascript中的閉包

    理解javascript中的閉包

    本文主要介紹了javascript中閉包的特性、作用、示例代碼以及注意事項(xiàng)。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • canvas?2d?環(huán)形統(tǒng)計(jì)圖手寫實(shí)現(xiàn)示例

    canvas?2d?環(huán)形統(tǒng)計(jì)圖手寫實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了canvas?2d?環(huán)形統(tǒng)計(jì)圖手寫實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • JS實(shí)現(xiàn)表單中點(diǎn)擊小眼睛顯示隱藏密碼框中的密碼

    JS實(shí)現(xiàn)表單中點(diǎn)擊小眼睛顯示隱藏密碼框中的密碼

    這篇文章主要介紹了JS實(shí)現(xiàn)表單中點(diǎn)擊小眼睛顯示隱藏密碼框中的密碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論