返回多個 Promise 並暫停執行直到全部完成
您需要使用返回 Promise 的方法來處理多個非同步操作。這些操作完成後,只有當所有 Promise 都已解決時,您才需要執行另一組程式碼。
doSomeAsyncStuff() 中的 Promise
您的 doSomeAsyncStuff() 函數需要傳回一個 Promise。這個Promise 反映了非同步任務的完成:
function doSomeAsyncStuff() { return new Promise((resolve, reject) => { var editor = generateCKEditor(); editor.on('instanceReady', () => { doSomeStuff(); resolve(true); }); }); }
使用Promise.all()
一旦你的非同步函數傳回一個Promise,你就可以使用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((error) => { // Handle errors here });
範例
以下是一個在所有五個非同步任務完成後記錄訊息的範例:
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中文網其他相關文章!