ホームページ >ウェブフロントエンド >jsチュートリアル >続行する前に複数の JavaScript Promise が終了するまで待つにはどうすればよいですか?
問題:
一連の非同期タスクがあります (promise) )、すべてのコードが完了した場合にのみコード ブロックを実行する必要があります。
解決策:
Promise.all を使用して、すべての Promise を 1 つの配列に収集し、その解決を待つか、拒否。
実装:
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((e) => { // Handle errors here });
改訂された doSomeAsyncStuff 関数:
function doSomeAsyncStuff() { return new Promise((resolve, reject) => { const editor = generateCKEditor(); editor.on('instanceReady', (evt) => { doSomeStuff(); resolve(true); }) }); }
例:
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((e) => { // Handle errors here }); } test();
以上が続行する前に複数の JavaScript Promise が終了するまで待つにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。