Promise.race和Promise.ang区别
时间: 2023-12-01 20:43:01 浏览: 105
Promise.race() 和 Promise.any() 都是 Promise 的方法,它们的作用都是在多个 Promise 中取得第一个解决的 Promise。但是它们的关注点不同:
- Promise.race() 主要关注 Promise 是否已经解决,无论它是被解决还是被拒绝,只要有一个 Promise 解决或拒绝,就会返回结果。
- Promise.any() 关注于 Promise 是否已经解决,只有在所有 Promise 都被拒绝时,才会返回一个 AggregateError 对象,其中包含所有 Promise 的拒因。
以下是 Promise.race() 的一个例子:
```javascript
const promise1 = new Promise((resolve, reject) => {
setTimeout(resolve, 500, 'one');
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'two');
});
Promise.race([promise1, promise2]).then((value) => {
console.log(value); // 输出:'two'
// promise2 先解决,所以输出 'two'
});
```
以下是 Promise.any() 的一个例子:
```javascript
const promise1 = new Promise((resolve, reject) => {
setTimeout(reject, 500, 'one');
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(reject, 100, 'two');
});
Promise.any([promise1, promise2]).then((value) => {
console.log(value);
}).catch((error) => {
console.log(error); // 输出:AggregateError: All promises were rejected
// 因为所有 Promise 都被拒绝,所以输出 AggregateError 对象
});
```
阅读全文