返回多个 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中文网其他相关文章!