promise.all用法
时间: 2023-10-18 11:22:31 浏览: 91
Promise Promise.all 的使用
`Promise.all()` 方法接收一个 Promise 对象的数组作为参数,并返回一个新的 Promise 对象。这个新的 Promise 对象在所有数组中的 Promise 对象都成功时才会被成功解决,如果有任何一个 Promise 对象被拒绝,那么新的 Promise 对象将被拒绝,并返回被拒绝的 Promise 对象的错误信息。
下面是一个例子,展示了如何使用 `Promise.all()` 方法:
```javascript
const promise1 = Promise.resolve(1);
const promise2 = Promise.resolve(2);
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 3);
});
Promise.all([promise1, promise2, promise3]).then(values => {
console.log(values); // [1, 2, 3]
});
```
在这个例子中,我们定义了三个 Promise 对象:`promise1`,`promise2` 和 `promise3`。前两个 Promise 对象是通过 `Promise.resolve()` 方法创建的,它们已经是解决状态了。第三个 Promise 对象是通过 `new Promise()` 方法创建的,它会在 100 毫秒后变为解决状态。
我们将这三个 Promise 对象传递给 `Promise.all()` 方法,并使用 `.then()` 方法来处理返回的值。当所有的 Promise 对象都解决时,`Promise.all()` 方法返回一个包含所有 Promise 对象的值的数组,这个数组的顺序与 Promise 对象在数组中的顺序相同。
如果数组中的任何一个 Promise 对象被拒绝了,那么 `Promise.all()` 方法会返回一个被拒绝的 Promise 对象,并且该 Promise 对象的错误信息将与第一个被拒绝的 Promise 对象的错误信息相同。例如:
```javascript
const promise1 = Promise.resolve(1);
const promise2 = Promise.reject('Error');
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 3);
});
Promise.all([promise1, promise2, promise3]).catch(error => {
console.log(error); // Error
});
```
在这个例子中,`Promise.all()` 方法返回一个被拒绝的 Promise 对象,并且该 Promise 对象的错误信息与 `promise2` 的错误信息相同。我们使用 `.catch()` 方法来处理这个被拒绝的 Promise 对象,并输出错误信息。
阅读全文