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 相关文章推荐
在 IE 中调用 javascript 打开 Excel 表
Dec 21 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
Jan 13 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
JavaScript插件化开发教程 (四)
Jan 27 Javascript
javascript实现数组中的内容随机输出
Aug 11 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
Oct 24 Javascript
自己封装的一个原生JS拖动方法(推荐)
Nov 22 Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
Vue中render函数的使用方法
Jan 31 Javascript
关于HTML5的data-*自定义属性的总结
May 05 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
Feb 15 Javascript
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
用Flash图形化数据(一)
2006/10/09 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
网页javascript精华代码集
2007/01/24 Javascript
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
python虚拟环境迁移方法
2019/01/03 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
Ratchet 模态框的实现
2020/08/19 HTML / CSS
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
打架检讨书100字
2014/01/08 职场文书
培训主管岗位职责
2014/02/01 职场文书
2014年女职工工作总结
2014/11/27 职场文书
工作态度不好检讨书
2015/05/06 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书