前端 Promise.all 方法
时间: 2023-10-28 17:02:00 浏览: 112
Promise Promise.all 的使用
前端的Promise.all方法用于将多个Promise实例包装成一个新的Promise实例。当传入的所有Promise实例都变为resolved状态时,Promise.all返回一个resolved状态的Promise,并将所有Promise的结果收集到一个数组中。如果其中任何一个Promise实例变为rejected状态,则Promise.all会立即返回一个rejected状态的Promise,并且不会等待其他未完成的Promise。 这个方法可以方便地处理多个异步操作,等待它们全部完成后再进行下一步处理。例如:
```javascript
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => resolve('Promise 1 resolved'), 2000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => resolve('Promise 2 resolved'), 3000);
});
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => resolve('Promise 3 resolved'), 1000);
});
Promise.all([promise1, promise2, promise3])
.then(results => {
console.log(results); // ['Promise 1 resolved', 'Promise 2 resolved', 'Promise 3 resolved']
})
.catch(error => {
console.log(error); // 这里不会执行,因为没有Promise失败
});
```
在上面的例子中,我们创建了3个Promise实例并分别设置了不同的延迟时间来模拟异步操作。使用Promise.all方法将这3个Promise实例包装成一个新的Promise实例,并通过then方法来处理最终的结果。当所有的Promise实例都变为resolved状态时,then回调函数将被执行,并将结果数组打印出来。如果其中任何一个Promise实例变为rejected状态,catch回调函数将被执行,并打印出错误信息。
阅读全文