ホームページ >ウェブフロントエンド >jsチュートリアル >forEach ループ内のすべての非同期操作が完了した後にコールバックが確実に実行されるようにするにはどうすればよいですか?
問題:
forEach ループ内のすべての非同期操作が次の場合にコールバックを実行する方法完了しましたか?
解決策:
1.単純なカウンターの使用:
カウンター itemsProcessed を 0 に初期化します。各非同期関数のコールバックでカウンターをインクリメントします。 itemsProcessed が配列の合計長に達すると、「すべて完了」コールバックを呼び出します。
2. ES6 Promise の使用:
Promise.all を使用して、各非同期操作を表す Promise オブジェクトの配列を作成します。すべての Promise が完了すると、最後のコールバックが実行されます。
3.非同期ライブラリの使用:
async などの非同期ライブラリを利用して、非同期完了コールバックを表現するメカニズムを提供します。
改訂された例 (カウンター メソッド):
<code class="javascript">function callback() { console.log("All done!"); } var itemsProcessed = 0; [1, 2, 3].forEach((item, index, array) => { asyncFunction(item, () => { itemsProcessed++; if (itemsProcessed === array.length) { callback(); } }); });</code>
修正された予想される出力:
3 done 1 done 2 done All done!
以上がforEach ループ内のすべての非同期操作が完了した後にコールバックが確実に実行されるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。