ホームページ >ウェブフロントエンド >jsチュートリアル >複数の Promise が解決されるまで実行を一時停止するにはどうすればよいですか?
複数の Promise を返し、すべてが完了するまで実行を一時停止する
Promise を返すメソッドで複数の非同期操作を処理する必要があります。これらの操作が完了した後、すべての Promise が解決された場合にのみ、別のコード セットを実行したいとします。
doSomeAsyncStuff() の Promises
doSomeAsyncStuff() 関数は次のことを行う必要があります。プロミスを返します。この Promise は、非同期タスクの完了を反映しています。
function doSomeAsyncStuff() { return new Promise((resolve, reject) => { var editor = generateCKEditor(); editor.on('instanceReady', () => { doSomeStuff(); resolve(true); }); }); }
Promise.all() の使用
非同期関数が Promise を返したら、Promise を使用できます。 all() を使用して、これらの Promise を 1 つに集約しますPromise:
const promises = []; for (let i = 0; i < 5; i++) { promises.push(doSomeAsyncStuff()); } Promise.all(promises) .then(() => { for (let i = 0; i < 5; i++) { doSomeStuffOnlyWhenTheAsyncStuffIsFinish(); } }) .catch((error) => { // Handle errors here });
例
以下は、5 つの非同期タスクがすべて終了した後にメッセージを記録する例です。
function doSomethingAsync(value) { return new Promise((resolve) => { setTimeout(() => { console.log("Resolving " + value); resolve(value); }, Math.floor(Math.random() * 1000)); }); } function test() { const promises = []; for (let i = 0; i < 5; i++) { promises.push(doSomethingAsync(i)); } Promise.all(promises) .then((results) => { console.log("All done", results); }) .catch((error) => { // Handle errors here }); } test();
以上が複数の Promise が解決されるまで実行を一時停止するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。