js代码-面试题2:使用promise.all 进行5个请求,若其中一个失败了,怎么让其他4个成
时间: 2023-09-02 18:02:21 浏览: 186
使用Promise.all()可以同时发送多个请求,并且只有当所有的请求都成功时,返回的Promise对象才被解析为一个包含所有请求结果的数组。如果其中一个请求失败了,那么Promise.all()返回的Promise对象会立即被拒绝,并且会传递失败的原因。
但是你提到的需求是,如果其中一个请求失败了,仍然希望其他四个请求能够继续执行并成功返回结果。这种情况下,可以使用Promise.allSettled()方法来实现。
Promise.allSettled()方法返回一个Promise对象,该对象在所有给定的promise都已经结束时被解析,无论是成功还是失败。返回的Promise对象的状态会一直保持为已解析,不会被拒绝。
具体做法可以参考下面的代码示例:
```javascript
const promises = [promise1, promise2, promise3, promise4, promise5];
Promise.allSettled(promises)
.then(results => {
// 遍历所有结果
results.forEach(result => {
if (result.status === 'fulfilled') {
// 如果请求成功
console.log(result.value);
} else {
// 如果请求失败
console.log(result.reason);
}
});
})
.catch(error => {
console.error(error);
});
```
通过Promise.allSettled()方法,即使其中一个请求失败了,其他四个请求的结果也会被成功返回。我们可以遍历返回的结果数组,根据每个结果的状态来判断哪些请求是成功的,哪些请求是失败的,然后做相应的处理。
阅读全文