axios并发请求怎么把成功失败的都返回呢

91 阅读1分钟
前言

在工作中当我们的项目来到一个新的页面需要发多个请求,而这些请求的数据又毫不相干时,我们可以采取并发请求的方式。 目前并发请求主要有Promise.all和axios.all两种方式,但是返回使用all请求时,假如某一个接口返回报错,那么all就是直接catch中返回了,并不会进then中。 image.png

会在catch中直接打印出 let p3 = Promise.reject('error')

image.png

那么.........我就先使用Promise.all解一波 哈哈哈哈

在Promise.all中对请求数组先map一波,把item的请求逐一返回

Promise.all(
  [p1, p2, p3, p4, p5].map(item => {
    return item.then(res => {
      return res
    }).catch(err => {
      return err
    })
  })
).then(res => {
  console.log(res)
}).catch(err => {
  console.log(err)
})

下图是返回结果:

image.png

还可以使用Promise.allSettled

Promise.allSettled([p1, p2, p3, p4, p5])
  .then(results => {
    console.log(results)
  })

下图是返回结果:

image.png

简单记录一下,怕自己没脑子又忘了.........