如何处理多个 Promise 并等待其完成
使用异步代码时,通常需要处理多个 Promise 并等待它们一切都需要在继续之前完成。本文将指导您使用 Promise.all 实现这一目标。
Promise.all 简介
Promise.all 接受一组 Promise 并返回一个可解析的 Promise当所有输入承诺都已解决时,或者如果其中任何一个拒绝,则拒绝。
重组doSomeAsyncStuff 返回 Promise
要使 doSomeAsyncStuff 与 Promise 配合使用,请修改如下:
function doSomeAsyncStuff() { return new Promise((resolve) => { editor.on('instanceReady', function(evt) { doSomeStuff(); resolve(true); }); }); }
使用 Promise.all 等待所有异步任务
一旦 doSomeAsyncStuff 返回一个承诺,你可以使用 Promise.all 等待它的所有实例完成。这是代码的改进版本:
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 时创建一个承诺数组。 Promise.all 接受这个数组并等待所有的 Promise 解析。一旦所有 Promise 都得到解决,就会执行 then 回调,允许您执行依赖于异步任务结果的操作。
以上是如何使用 Promise.all 管理和等待多个 Promise?的详细内容。更多信息请关注PHP中文网其他相关文章!