Promise.all 批量执行
时间: 2023-10-20 10:34:00 浏览: 126
Promise.all 是一个用于并行执行多个 Promise 的方法。它接受一个 Promise 数组作为参数,并返回一个新的 Promise 对象。这个新的 Promise 对象在所有输入的 Promise 都被解决(resolved)或有一个被拒绝(rejected)时才会被解决或被拒绝。
下面是一个示例,展示了如何使用 Promise.all 来批量执行多个 Promise:
```javascript
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => resolve('Promise 1 resolved'), 1000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => resolve('Promise 2 resolved'), 2000);
});
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => resolve('Promise 3 resolved'), 1500);
});
Promise.all([promise1, promise2, promise3])
.then(results => {
console.log(results); // 输出: ['Promise 1 resolved', 'Promise 2 resolved', 'Promise 3 resolved']
})
.catch(error => {
console.error(error); // 当有一个 Promise 被拒绝时输出错误信息
});
```
在上面的示例中,我们创建了三个异步的 Promise 对象(promise1、promise2 和 promise3),分别模拟了耗时不同的异步操作。通过传递这些 Promise 对象给 Promise.all 方法,我们可以等待它们全部执行完成后再进行下一步操作。
当所有的 Promise 都被解决时,Promise.all 返回的新 Promise 对象会被解决,并将按照输入的 Promise 数组的顺序返回一个结果数组(results)。如果有任何一个 Promise 被拒绝,那么返回的新 Promise 对象会被拒绝,并传递第一个被拒绝 Promise 的原因(error)。
这样,我们可以通过使用 Promise.all 来实现批量执行多个异步操作,并在它们全部完成后执行一些操作或处理结果。
阅读全文