当前位置:   article > 正文

面试:Promise.all一个请求失败也能得到其余正确的请求结果_promise.all有一个报错后面的数据怎么获取

promise.all有一个报错后面的数据怎么获取
  1. Promise.all默认只要有一个错误就直接返回错误。promise.all中任何一个promise 出现错误的时候都会执行reject,导致其它正常返回的数据也无法使用
  2. Promise.all(
  3. [
  4. Promise.reject({ code: 500, msg: "服务异常" }),
  5. Promise.resolve({ code: 200, list: [] }),
  6. Promise.resolve({ code: 200, list: [] })
  7. ].map(p => p.catch(e => e))
  8. )
  9. .then(res => {
  10. console.log("res=>", res);
  11. })
  12. .catch(error => {
  13. console.log("error=>", error);
  14. });
  15. res=> [ { code: 500, msg: '服务异常' },
  16. { code: 200, list: [] },
  17. { code: 200, list: [] } ]
  18. 核心内容是map方法,map的每一项都是promise,catch方法返回值会被promise.reslove()包裹,这样传进promise.all的数据都是resolved状态的。
  19. // 使用Promise.all 其中id为69的商品,返回失败,会导致整个Promise接受到reject状态.
  20. // 所以进行改造, p catch 得到的err 为返回失败抛出的信息, 进行置空
  21. .map(p => p.catch(err => '')))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/459174
推荐阅读