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

JavaScript?中的異步?forEach

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

在本篇文章中,我們將看看我們是否可以在 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; 因此,如果其中一個出錯,也不會被注意到。 如果節(jié)點 10 上沒有注冊 unhandledrejection 偵聽器,進程就會崩潰!
  • 所有獎金是同時分配的,而不是順序分配的,因為 forEach 不會等待每個承諾一個接一個地實現(xiàn)。 結果,循環(huán)在所有獎金發(fā)放之前就結束了。
  • 結果,在任何獎勵完全發(fā)放之前,sendEmail() 發(fā)送了電子郵件。 也許一個也不會發(fā)出; 他們可能都會拋出錯誤!

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

1.連續(xù)處理每個獎金。 你可以使用 for…of 構造,因為 JavaScript 支持異步等待。

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

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

1.并行處理所有獎金。

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

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

for 和 while 循環(huán)自然地與 async-await 一起運行,因為它們是在原始函數(shù)體中編寫的。 但是,當您調用另一個函數(shù)時,僅當被調用函數(shù)返回一個承諾并處理該承諾時,才能使用 async-await。

因為 .reduce().map() 都會產生一個我們可能等待的承諾或一系列承諾,所以我們可以使用它們。

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

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

相關文章

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

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

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

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

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

    Js自定義多選框效果的實例代碼

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

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

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

    Javascript的爺孫通信和組件自調用詳解

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

    javascript canvas API內容整理

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

    Tabella.js項目常見問題及解決方案詳解

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

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

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

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

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

    JS獲取select的value和text值的簡單實例

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

最新評論

内黄县| 太湖县| 柯坪县| 华容县| 南阳市| 新干县| 光泽县| 德惠市| 卓资县| 离岛区| 宝应县| 黔东| 南京市| 瑞昌市| 申扎县| 银川市| 雅江县| 渭源县| 刚察县| 资溪县| 高安市| 杭锦后旗| 开远市| 绥滨县| 宁波市| 紫阳县| 丽江市| 石门县| 怀来县| 黄石市| 府谷县| 溧阳市| 增城市| 吉木萨尔县| 南木林县| 孟津县| 扎兰屯市| 贺州市| 鄂伦春自治旗| 京山县| 涞水县|