面试:一个请求失败也能得到其余正确的请求结果

时间:2025-03-05 16:57:20
默认只要有一个错误就直接返回错误。中任何一个promise 出现错误的时候都会执行reject,导致其它正常返回的数据也无法使用
(
  [
    ({ code: 500, msg: "服务异常" }),
    ({ code: 200, list: [] }),
    ({ code: 200, list: [] })
  ].map(p => (e => e))
)
  .then(res => {
    ("res=>", res);
  })
  .catch(error => {
    ("error=>", error);
  });
res=> [ { code: 500, msg: '服务异常' },
  { code: 200, list: [] },
  { code: 200, list: [] } ]
核心内容是map方法,map的每一项都是promise,catch方法返回值会被()包裹,这样传进的数据都是resolved状态的。
 
// 使用 其中id为69的商品,返回失败,会导致整个Promise接受到reject状态.
// 所以进行改造, p catch 得到的err  为返回失败抛出的信息, 进行置空
.map(p => (err => '')))