最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript?中的異步?forEach

 更新時(shí)間:2023年07月08日 11:44:15   作者:跡憶客  
這篇文章主要介紹了JavaScript異步forEach的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(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');

這里有一些問題:

  • 未處理迭代器函數(shù)返回的 Promise; 因此,如果其中一個(gè)出錯(cuò),也不會(huì)被注意到。 如果節(jié)點(diǎn) 10 上沒有注冊 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ì)比我們需要的更冗長,但您也可以在這種情況下使用典型的 for(…;…;…) 。

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

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

如果順序無關(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)用,因此無法異步使用它們。 因此,異步代碼不能在數(shù)組內(nèi)部使用,例如 array.some()array.filter()。

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

相關(guān)文章

  • js設(shè)置function參數(shù)默認(rèn)值(適合沒有傳參情況)

    js設(shè)置function參數(shù)默認(rèn)值(適合沒有傳參情況)

    div+css模擬js信息框的類庫時(shí)遇到一個(gè)問題當(dāng)沒有傳遞參數(shù)過去時(shí)自動(dòng)使用提示信息作為窗口標(biāo)題,具體的實(shí)現(xiàn)如下
    2014-02-02
  • javascript實(shí)現(xiàn)的平方米、畝、公頃單位換算小程序

    javascript實(shí)現(xiàn)的平方米、畝、公頃單位換算小程序

    這篇文章主要介紹了javascript實(shí)現(xiàn)的平方米、畝、公頃單位換算小程序,此代碼通過URL傳參的方式使用,也可以根據(jù)自己的需求做些改動(dòng),需要的朋友可以參考下
    2014-08-08
  • Js自定義多選框效果的實(shí)例代碼

    Js自定義多選框效果的實(shí)例代碼

    本篇文章主要介紹了Js自定義多選效果的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 詳解JavaScript數(shù)據(jù)類型和判斷方法

    詳解JavaScript數(shù)據(jù)類型和判斷方法

    這篇文章主要介紹了JavaScript數(shù)據(jù)類型和判斷方法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • Javascript的爺孫通信和組件自調(diào)用詳解

    Javascript的爺孫通信和組件自調(diào)用詳解

    這篇文章主要為大家詳細(xì)介紹了Javascript的爺孫通信和組件自調(diào)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • javascript canvas API內(nèi)容整理

    javascript canvas API內(nèi)容整理

    在本篇文章里小編給大家分享的是關(guān)于javascript canvas API內(nèi)容整理,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2020-02-02
  • Tabella.js項(xiàng)目常見問題及解決方案詳解

    Tabella.js項(xiàng)目常見問題及解決方案詳解

    Tabella.js是純JavaScript響應(yīng)式表格插件,支持觸摸操作與AMD模塊加載,這篇文章主要介紹了Tabella.js項(xiàng)目常見問題及解決方案的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-05-05
  • JavaScript解決浮點(diǎn)數(shù)運(yùn)算精度丟失問題的幾種方案

    JavaScript解決浮點(diǎn)數(shù)運(yùn)算精度丟失問題的幾種方案

    在開發(fā)項(xiàng)目的過程中,我們難免會(huì)遇到數(shù)值計(jì)算的場景,此時(shí),我們通常會(huì)遇到數(shù)值計(jì)算結(jié)果和我們的預(yù)期不一致的情況,通常發(fā)生這種情況的原因都是因?yàn)镴avaScript精度丟失的問題,所以本文給大家介紹了JavaScript解決浮點(diǎn)數(shù)運(yùn)算精度丟失問題的幾種方案
    2025-06-06
  • JS匿名函數(shù)類生成方式實(shí)例分析

    JS匿名函數(shù)類生成方式實(shí)例分析

    這篇文章主要介紹了JS匿名函數(shù)類生成方式,結(jié)合實(shí)例形式分析了javascript匿名函數(shù)類相關(guān)屬性與方法定義與使用技巧,需要的朋友可以參考下
    2016-11-11
  • JS獲取select的value和text值的簡單實(shí)例

    JS獲取select的value和text值的簡單實(shí)例

    本篇文章主要是對JS獲取select的value和text值的簡單實(shí)例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02

最新評論

万山特区| 潮安县| 隆林| 白水县| 建阳市| 磐安县| 平乐县| 陆丰市| 紫阳县| 临安市| 收藏| 呼和浩特市| 阳高县| 博乐市| 大同县| 安顺市| 沂源县| 崇明县| 皮山县| 长海县| 临海市| 东乡族自治县| 富川| 枣庄市| 合水县| 江陵县| 抚松县| 额敏县| 蚌埠市| 铜梁县| 永嘉县| 南木林县| 内乡县| 灌南县| 监利县| 屏南县| 普定县| 涞水县| 马公市| 光泽县| 云梦县|