「forEach」反復後の非同期コールバック実行
クエリ:
コールバックはどのように実行できますか'forEach' ループのすべての非同期コールバックが完了した後に実行されますか?
解決策:
Array.forEach は本質的にこの機能をサポートしません。ただし、この目標を達成するには、いくつかの代替アプローチがあります。
1.カウンタ:
カウンタを使用して処理されたアイテムの数を追跡します。各非同期操作のコールバックでカウンターをインクリメントし、カウンターがアイテムの合計数に達したときに最後のコールバックを呼び出します。
2.約束 (ES6):
a.順次実行:
Promise を順番に連鎖させて、非同期タスクの同期実行を保証し、各項目が配列内に表示される順序で処理されるようにします。
b.並列実行:
Promise.all() メソッドを使用して、実行順序を保証せずにすべての非同期タスクを並列実行します。
3.非同期ライブラリ:
Async.js などの人気のあるライブラリは、Async#series() や Async#Parallel() など、必要な動作を表現するメカニズムを提供します。
元の実装例 (同期):
質問内の元のコードは同期シナリオを例示しており、次の実装を使用できます:
posts.foreach(function(v, i) { res.write(v + ". index " + i); }); res.end();
以上が「forEach」ループ内のすべての非同期コールバックが終了した後にコールバックを実行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。