ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript ES6 Promise for Loop で非同期チェーンを実現するにはどうすればよいですか?

JavaScript ES6 Promise for Loop で非同期チェーンを実現するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-22 11:52:12725ブラウズ

How to Achieve Asynchronous Chaining in a JavaScript ES6 Promise for Loop?

JavaScript ES6 Promise for Loop with Asynchronous Chaining

提供されたコードでは、10 回反復して各回の Promise を作成する for ループを作成しようとしています。反復。ただし、ループは同期的に実行されるため、予測できない出力が発生します。目標は、各 Promise が前の Promise が解決された後にのみ実行されるようにすることです。

Promisifying setTimeout

解決を容易にするために、というヘルパー関数を定義します。 setTimeout を約束する遅延function:

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

非同期 Promise の作成

確実に非同期実行できるように、すぐに解決される最初の Promise を作成します。後続の各 Promise は前の Promise にチェーンされます:

let p = Promise.resolve();
for (let i = 0; i < 10; i++) {
    p = p.then(() => delay(Math.random() * 1000))
         .then(() => console.log(i));
}

このアプローチにより、各ループ反復により、前の Promise が完了した後に解決される Promise が作成されます。 console.log(i) ステートメントは正しい順序で実行され、0 から 9 までの値が出力されます。

以上がJavaScript ES6 Promise for Loop で非同期チェーンを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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