Promise.all()方法
时间: 2023-11-22 10:47:41 浏览: 79
`Promise.all()`方法用于将多个Promise实例包装成一个新的Promise实例。当所有的Promise实例都变为fulfilled状态时,新的Promise实例才会变为fulfilled状态,返回值是一个由所有Promise实例返回值组成的数组。如果其中任何一个Promise实例变为rejected状态,新的Promise实例就会变为rejected状态,返回值是第一个被rejected的Promise实例的返回值。
以下是一个使用`Promise.all()`方法的例子:
```javascript
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(2);
const p3 = Promise.resolve(3);
Promise.all([p1, p2, p3])
.then(values => {
console.log(values); // 输出:[1, 2, 3]
})
.catch(error => {
console.error(error);
});
```
在上面的例子中,我们创建了三个Promise实例,每个实例都返回一个数字。我们将这三个Promise实例传递给`Promise.all()`方法,它返回一个新的Promise实例。当所有的Promise实例都变为fulfilled状态时,新的Promise实例才会变为fulfilled状态,返回值是一个由所有Promise实例返回值组成的数组。在这个例子中,我们打印了这个数组。
如果其中任何一个Promise实例变为rejected状态,新的Promise实例就会变为rejected状态,返回值是第一个被rejected的Promise实例的返回值。以下是一个使用`Promise.all()`方法处理rejected状态的例子:
```javascript
const p1 = Promise.resolve(1);
const p2 = Promise.reject('error');
const p3 = Promise.resolve(3);
Promise.all([p1, p2, p3])
.then(values => {
console.log(values);
})
.catch(error => {
console.error(error); // 输出:error
});
```
在上面的例子中,我们将第二个Promise实例变为rejected状态。当我们使用`Promise.all()`方法时,它返回一个新的Promise实例。由于第二个Promise实例变为rejected状态,新的Promise实例也会变为rejected状态,并返回第二个Promise实例的返回值,即字符串'error'。
阅读全文