首頁 > web前端 > js教程 > 如何實現異步 forEach 迴圈的完成回呼?

如何實現異步 forEach 迴圈的完成回呼?

DDD
發布: 2024-11-04 13:09:01
原創
724 人瀏覽過

How to Implement a Completion Callback for Asynchronous forEach Loops?

非同步forEach 回呼:實現完成回呼

在使用像forEach 這樣的非同步循環的場景中,經常需要觸發一個所有非同步操作完成後回調。本指南介紹了實現此功能的幾種方法。

1.使用簡單的計數器

此技術使用一個計數器,每次處理一個項目時該計數器都會遞增。當計數器達到項目總數時,將呼叫完成回呼。

1

2

3

4

5

6

7

8

9

10

11

12

function callback () { console.log('all done'); }

 

var itemsProcessed = 0;

 

[1, 2, 3].forEach((item, index, array) => {

  asyncFunction(item, () => {

    itemsProcessed++;

    if(itemsProcessed === array.length) {

      callback();

    }

  });

});

登入後複製

2.利用 ES6 Promises

Promise 可以建立順序 Promise 鏈,確保非同步任務的同步執行。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

function asyncFunction (item, cb) {

  setTimeout(() => {

    console.log('done with', item);

    cb();

  }, 100);

}

 

let requests = [1, 2, 3].reduce((promiseChain, item) => {

    return promiseChain.then(() => new Promise((resolve) => {

      asyncFunction(item, resolve);

    }));

}, Promise.resolve());

 

requests.then(() => console.log('done'))

登入後複製

3.使用非同步函式庫

像「async」這樣的函式庫提供了表達所需功能的機制。具體實作會根據選擇的庫的不同而有所不同。

以上是如何實現異步 forEach 迴圈的完成回呼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板