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 相关文章推荐
myFocus slide3D v1.1.0 使用方法与下载
Jan 12 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
Jun 30 Javascript
JavaScript时间操作之年月日星期级联操作
Jan 15 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
Mar 07 Javascript
webpack配置文件和常用配置项介绍
Apr 28 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
Nov 28 Javascript
vue项目关闭eslint校验
Mar 21 Javascript
js实现ATM机存取款功能
Oct 27 Javascript
Vue中通过Vue.extend动态创建实例的方法
Aug 13 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
Aug 23 Javascript
js canvas实现五子棋小游戏
Jan 22 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
Zend 输出产生XML解析错误
2009/03/03 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
JQuery index()方法使用代码
2010/06/02 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python正规则表达式学习指南
2016/08/02 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python实现公司年会抽奖程序
2019/01/22 Python
python解释器spython使用及原理解析
2019/08/24 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
阿波罗盒子:Apollo Box
2017/08/14 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
小学安全工作总结2015
2015/05/18 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
JavaScript原型链详解
2021/11/07 Javascript
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android