提供されたコードでは、10 回反復して各回の Promise を作成する for ループを作成しようとしています。反復。ただし、ループは同期的に実行されるため、予測できない出力が発生します。目標は、各 Promise が前の Promise が解決された後にのみ実行されるようにすることです。
解決を容易にするために、というヘルパー関数を定義します。 setTimeout を約束する遅延function:
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
確実に非同期実行できるように、すぐに解決される最初の 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 サイトの他の関連記事を参照してください。