如题:
用Promise.all的话一个失败就都失败了,还有别的方案吗?
https://es6.ruanyifeng.com/#d...
看这几个
另外,请求发送出去了,不会受到别的请求影响,只是用了all,后面的then不会收到结果
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
方法一
用 Promise.allSettled
举例,假如下面的 p2 失败(p1、p2、p3 都是 Promise 对象)
根据文档,对于 fulfilled 状态的,通过
.value
取值,rejected 的,通过.reason
找原因。方法二
如果浏览器版本还不够支持 allSettled,也可以自己处理,对每个要放入 Promise.all 的 promise 对象,都可以自己 catch 并处理掉错误,比如
这样如果 p2 出错,r2 就会是 null。当然要注意正常返回也有 null 的话要避免使用 null 作为错误返回值,可以改用 undefined。如果 undefined 也不能用,可以像 allSettled 那样把所有结果都封装成对象,比如