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中的关联数组分析
Apr 09 Javascript
javascript列表框操作函数集合汇总
Nov 28 Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 Javascript
在javascript中使用com组件的简单实现方法
Aug 17 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
Oct 12 Javascript
JavaScript 中 avalon绑定属性总结
Oct 19 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
Mar 02 Javascript
vue.js 实现评价五角星组件的实例代码
Aug 13 Javascript
JavaScript数组去重的几种方法
Apr 07 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
Sep 01 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
Javascript中的奇葩知识,你知道吗?
Jan 25 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
php 无限级缓存的类的扩展
2009/03/16 PHP
PHP 超链接 抓取实现代码
2009/06/29 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
JS实现密码框效果
2020/09/10 Javascript
Python对数据库操作
2016/03/28 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
Python正则表达式指南 推荐
2018/10/09 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
PHP新手指南
2021/04/01 PHP
Vue如何实现组件间通信
2021/05/15 Vue.js
Django路由层如何获取正确的url
2021/07/15 Python
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL