首頁 > web前端 > js教程 > 主體

非同步forEach任務完成後如何執行回呼?

Mary-Kate Olsen
發布: 2024-11-04 12:53:01
原創
307 人瀏覽過

How to Execute a Callback after Asynchronous forEach Tasks Complete?

非同步forEach任務完成後執行回呼

問題

如何一次全部非同步執行回調函數forEach已經完成?

答案

Array.forEach 沒有為這種情況提供開箱即用的解決方案,但有各種方法來實現所需的功能。

使用計數器

<br>function callback() { console.log('all did'); }<p>var itemsProcessed = 0;[1, 2, 3].forEach(item => {</p><p> asyncFunction(item, () => {<br></p><pre class="brush:php;toolbar:false">itemsProcessed++;
if(itemsProcessed === array.length) {
  callback();
}
登入後複製
});

});


此方法使用每次非同步操作完成時都會遞增的計數器。一旦計數器達到數組中的項目總數,就會呼叫回調函數。

使用ES6 Promises

  • 同步執行:< ;pre>
    const requests = [1, 2, 3].reduce( (promiseChain, item) => {
    回傳promiseChain.then(() => new Promise((resolve) =>; {
    asyncFunction(item, resolve);
    }));
    }, Promise.resolve());
requests.then(() => console. log('done'))


在此範例中,我們鍊式承諾保證每個非同步操作在下一個非同步操作開始之前完成。

  • 非同步執行:
    <br>const requests = [1,2,3].map((item) => {<br>return new Promise((resolve) = > {<br> asyncFunction(item, resolve);<br>});<br>})<br>
    登入後複製
Promise.all(requests).then(() => console.log ('done'));


在這種情況下,我們使用Promise.all 方法同時執行所有非同步操作,然後在所有非同步操作完成時調用回調。

使用非同步函式庫

像 async 這樣的非同步函式庫提供了更優雅地表達所需功能的機制。

以上是非同步forEach任務完成後如何執行回呼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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