問題:
你有一系列非同步任務(promises🎜>
你有一系列非同步任務(promises) )並且僅當所有程式碼區塊都已執行時才需要執行已完成。
解:使用Promise.all 將所有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((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中文網其他相關文章!