用axios.all发送多个发请求的时候,什么时候会进入.then方法?

发布于 2022-09-12 01:32:41 字数 278 浏览 9 评论 0

用axios.all发送多个发请求的时候,什么时候会进入.then方法?

 Axios.all(\[request1, request2, request3\])
    .then( Axios.spread((res1, res2, res3) => { 
        console.log('全部加载完成') 
    })).catch(err => { 
    console.log(err.response)
 });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

骷髅 2022-09-19 01:32:41

then接受两个回调函数,一个成功success,一个失败fail

axios.all 如果全部成功走success,如果有一个失败,则立刻走fail。

即全部成功或者其中某一个失败时立刻决议。

可以做个测试,让中途某个Promise失败。

function test() {
  let p1 = new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log('success, 1')
      resolve(1)
    }, 1000)
  })
  
  let p2 = new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log('fail, 2')
      reject(2)
    }, 2000)
  })
  
  let p3 = new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log('success, 3')
      resolve(3)
    }, 3000)
  })
  
  axios.all([p1, p2, p3]).then(res => {
    console.log(res)
    console.log('all done')
  }, error => {
    console.log(error)
    console.log('someone failed')
  })
}

test()

输出:

> success, 1
> fail, 2
> 2
> someone failed
> success, 3

这里3个Promise,分别计时1s,2s,3s决议,其中第二个返回失败,可以看到axios.all的then中,失败回调函数被触发了。并且在第三个promise决议之前就触发。

所以就是中途某个Promise失败就会走失败回调,若完全成功则走成功回调。

魂归处 2022-09-19 01:32:41

多个请求都完成(成功或失败)的时候

半世晨晓 2022-09-19 01:32:41

多个接口同时完成后,然后在执行一些逻辑

request1, request2, requset3 都请求成功返回的时候,就会进入 then()
如果请求失败则进入 catch()

官网文档 并发

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文