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 相关文章推荐
通过jquery还原含有rowspan、colspan的table的实现方法
Feb 10 Javascript
js实现上传图片之上传前预览图片
Mar 25 Javascript
Bootstrap标签页(Tab)插件使用方法
Mar 21 Javascript
javascript数组去重常用方法实例分析
Apr 11 Javascript
深入理解ES6的迭代器与生成器
Aug 19 Javascript
Angular4 ElementRef的应用
Feb 26 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
微信小程序实现topBar底部选择栏效果
Jul 20 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
Aug 13 Javascript
js replace替换字符串同时替换多个方法
Nov 27 Javascript
浅谈vue中resetFields()使用注意事项
Aug 12 Javascript
vue实现图片裁剪后上传
Dec 16 Vue.js
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
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
基于jQuery试卷自动排版系统
2010/07/18 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
javascript表单验证大全
2015/08/12 Javascript
js密码强度校验
2015/11/10 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
python 文件与目录操作
2008/12/24 Python
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python中的列表知识点汇总
2015/04/14 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
如何利用python进行时间序列分析
2020/08/04 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
2014年民主评议党员个人总结
2014/09/24 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
雷峰塔导游词
2015/02/09 职场文书
如何在Python中创建二叉树
2021/03/30 Python