axios不用catch的写法和使用catch的效果一样吗?

1.官网上的写法是

axios.post(url, data)
    .then(response => {
        console.log(response);
    })
    .catch(error => {
           console.log(error);
    })

2.公司项目的写法是

axios.post(url, data)
    .then(response => {
        console.log(response);
    }, error => {
        console.log(error);
    })

本人小白,之前没怎么用过then和catch的写法,请问这两种写法是一样的效果吗?谢谢了

阅读 14.6k
3 个回答

首先 这个不是 axios catch 的相关 而是关于 new Promise() 的then
阮一峰在 promise 文档写的很清楚

一般来说,不要在then方法里面定义 Reject 状态的回调函数(即then的第二个参数),总是使用catch方法。
// bad
promise
  .then(function(data) {
    // success
  }, function(err) {
    // error
  });

// good
promise
  .then(function(data) { //cb
    // success
  })
  .catch(function(err) {
    // error
  });
上面代码中,第二种写法要好于第一种写法,理由是第二种写法可以捕获前面then方法执行中的错误,也更接近同步的写法(try/catch)。因此,建议总是使用catch方法,而不使用then方法的第二个参数。

没有什么谁好谁不好之说 主要看业务吧, 这样写可能容易看懂一些

axios.post(url, data)
    .then(response => {
        //处理逻辑
    }, error => {
        console.log('接口报错');
    })
    .catch(error=>{
        console.log('处理逻辑出错');
    })
axios.post(url, data)
    .then(response => {
        //处理逻辑
    })
    .catch(error=>{
        console.log('接口或处理逻辑出错');
    })

推荐官网的写法。

你们公司的写法和官网的差别在于。 你公司的写法无法catch第一个参数的异常。

也就是说

 console.log(response);

上面这块代码报错,是无法捕获的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏