vue axios请求成功却进入catch的原因分析


Posted in Javascript onSeptember 08, 2020

问题:axios返回200状态码(即请求成功)却走进了catch里面

原因:

1.当axios请求完成后走的时then的代码块,如果then代码块中存在错误代码信息,这时就会进入catch中抛出异常(注意:此时控制台并不会报错,因为错误被catch捕获了

2.axios是异步发起,若发起后页面刷新,那么就会丢失当前进程,导致接收不到。例如 form表单,点击按钮提交后,表单会刷新

补充知识:axios用catch的写法与不使用catch有什么区别?

官网上的写法:

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

公司项目的写法:

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

之前一直没有仔细研究过then和catch的写法,事实上,这个不是 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方法的第二个参数。

公司的写法无法catch第一个参数的异常。

这样写可能容易看懂一些:

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

以上这篇vue axios请求成功却进入catch的原因分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 代码集(学习js的朋友可以看下)
Jul 22 Javascript
jquery tools系列 expose 学习
Sep 06 Javascript
为jQuery.Treeview添加右键菜单的实现代码
Oct 22 Javascript
原生js实现查找/添加/删除/指定元素的class
Apr 12 Javascript
JavaScript返回上一页的三种方法及区别介绍
Jul 04 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
Mar 01 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
微信小程序“摇一摇”的实例代码
Jul 20 Javascript
vue 的点击事件获取当前点击的元素方法
Sep 15 Javascript
webpack结合express实现自动刷新的方法
May 07 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
JavaScript数组类型Array相关的属性与方法详解
Sep 08 #Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
Sep 08 #Javascript
vue等两个接口都返回结果再执行下一步的实例
Sep 08 #Javascript
基于postman获取动态数据过程详解
Sep 08 #Javascript
解决vue请求接口第一次成功,第二次失败问题
Sep 08 #Javascript
如何区分vue中的v-show 与 v-if
Sep 08 #Javascript
谈谈JavaScript中的函数
Sep 08 #Javascript
You might like
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
使用laravel和ECharts实现折线图效果的例子
2019/10/09 PHP
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
Python中如何添加自定义模块
2020/06/09 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
英国综合网上购物商城:The Hut
2018/07/03 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
学前教育毕业生自荐信范文
2013/12/24 职场文书
党员创先争优承诺书
2014/03/26 职场文书
初中生期末评语大全
2014/04/24 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
共青团员自我评价
2015/03/10 职场文书
党小组鉴定意见
2015/06/02 职场文书
Redis 常见使用场景
2021/08/30 Redis