ホームページ  >  記事  >  ウェブフロントエンド  >  「forEach」ループ内のすべての非同期コールバックが終了した後にコールバックを実行する方法は?

「forEach」ループ内のすべての非同期コールバックが終了した後にコールバックを実行する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 04:19:03855ブラウズ

How to Execute a Callback After All Asynchronous Callbacks Within a 'forEach' Loop Finish?

「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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。