js的promise.all方法
时间: 2024-03-16 07:39:09 浏览: 118
js代码-Promise.allSettled 方法实现
Promise.all() 是 JavaScript 中的一个方法,它接收一个 Promise 对象数组作为参数,并返回一个新的 Promise 对象。这个新的 Promise 对象在传入的所有 Promise 对象都成功解决(resolved)时才会被解决,否则只要有一个 Promise 对象被拒绝(rejected),新的 Promise 对象就会被拒绝。
使用 Promise.all() 方法可以方便地处理多个异步操作,并在所有操作完成后执行相应的回调或继续执行其他操作。下面是使用 Promise.all() 的一些特点和用法:
1. 特点:
- 当传入的 Promise 对象数组中的所有 Promise 对象都变为解决状态时,返回的 Promise 对象才会变为解决状态。
- 如果传入的 Promise 对象数组中有任何一个 Promise 对象被拒绝,返回的 Promise 对象就会被拒绝,并且会将第一个被拒绝的 Promise 对象的拒绝原因作为参数传递给返回的 Promise 对象的拒绝回调函数。
2. 用法示例:
```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(() => {
reject('Promise 3 rejected');
}, 1500);
});
Promise.all([promise1, promise2, promise3])
.then((results) => {
console.log(results); // 不会执行到这里
})
.catch((error) => {
console.log(error); // 输出 'Promise 3 rejected'
});
```
在上面的示例中,promise1 和 promise2 都会在指定的时间后解决,而 promise3 则会在指定的时间后被拒绝。由于 promise3 被拒绝,所以 Promise.all() 返回的 Promise 对象也会被拒绝,并将 promise3 的拒绝原因传递给拒绝回调函数。
阅读全文