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 相关文章推荐
Iframe thickbox2.0使用的方法
Mar 05 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
Nov 07 Javascript
AngularJS使用ngMessages进行表单验证
Dec 27 Javascript
详细探究ES6之Proxy代理
Jul 22 Javascript
深入理解JavaScript中Ajax
Aug 02 Javascript
JS创建对象的写法示例
Nov 04 Javascript
jQuery中的一些小技巧
Jan 18 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
微信小程序提取公用函数到util.js及使用方法示例
Jan 10 Javascript
vue+element 实现商城主题开发的示例代码
Mar 26 Javascript
js 实现碰撞检测的示例
Oct 28 Javascript
5个实用的JavaScript新特性
Jun 16 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
PHP容易忘记的知识点分享
2013/04/30 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
python实现挑选出来100以内的质数
2015/03/24 Python
对python中return和print的一些理解
2017/08/18 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
python hash每次调用结果不同的原因
2019/11/21 Python
Python遍历字典方式就实例详解
2019/12/28 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
python模块内置属性概念及实例
2021/02/18 Python
汇科协同Java笔试题
2012/03/31 面试题
哈理工毕业生的求职信
2013/12/22 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫