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 miscellanea -display data real time, using window.status
Jan 09 Javascript
教你如何解密js/vbs/vbscript加密的编码异处理小结
Jun 25 Javascript
javascript cookies操作集合
Apr 12 Javascript
JavaScript 原型学习总结
Oct 29 Javascript
JS特权方法定义作用以及与公有方法的区别
Mar 18 Javascript
JS将制定内容复制到剪切板示例代码
Feb 11 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
Nov 30 Javascript
js + css实现标签内容切换功能(实例讲解)
Oct 09 Javascript
vue-router命名视图的使用讲解
Jan 19 Javascript
使用jQuery实现掷骰子游戏
Oct 24 jQuery
d3.js实现图形缩放平移
Dec 19 Javascript
Vue项目中如何封装axios(统一管理http请求)
May 02 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
为你总结一些php信息函数
2015/10/21 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
轻量级 JS ToolTip提示效果
2010/07/20 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
Reformation官网:美国女装品牌
2018/09/14 全球购物
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
夜大毕业自我鉴定
2013/10/11 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
校园广播稿500字
2014/02/04 职场文书
趣味体育活动方案
2014/02/08 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
评先进个人材料
2014/12/29 职场文书
小学英语课教学反思
2016/02/15 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android