ホームページ > ウェブフロントエンド > jsチュートリアル > forEach ループ内のすべての非同期操作が完了した後にコールバックが確実に実行されるようにするにはどうすればよいですか?

forEach ループ内のすべての非同期操作が完了した後にコールバックが確実に実行されるようにするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-04 14:17:02
オリジナル
1023 人が閲覧しました

How to Ensure a Callback is Executed After All Asynchronous Operations in a forEach Loop Complete?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート