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 相关文章推荐
Javascript 阻止javascript事件冒泡,获取控件ID值
Jun 27 Javascript
用jquery统计子菜单的条数示例代码
Oct 18 Javascript
Javascript添加监听与删除监听用法详解
Dec 19 Javascript
IE10中flexigrid无法显示数据的解决方法
Jul 26 Javascript
Javascript中prototype的使用详解
Jun 18 Javascript
React根据宽度自适应高度的示例代码
Oct 11 Javascript
vue项目总结之文件夹结构配置详解
Dec 13 Javascript
vue中如何让子组件修改父组件数据
Jun 14 Javascript
vue+element-ui实现表格编辑的三种实现方式
Oct 31 Javascript
vue日历/日程提醒/html5本地缓存功能
Sep 02 Javascript
解决layui富文本编辑器图片上传无法回显的问题
Sep 18 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 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
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
php封装的表单验证类完整实例
2016/10/19 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
删除重复数据的算法
2006/11/23 Javascript
Stop SQL Server
2007/06/21 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
2016/04/01 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
js控制div层的叠加简单方法
2016/10/15 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
武汉东之林科技有限公司机试
2013/09/17 面试题
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
汽车驾驶求职信
2013/10/25 职场文书
职工趣味运动会方案
2014/02/10 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
集体生日活动方案
2014/08/18 职场文书
借名购房协议书范本
2014/10/06 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
高三英语教学计划
2015/01/23 职场文书
浅析python中特殊文件和特殊函数
2022/02/24 Python
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers