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 相关文章推荐
js 获取中文拼音,Select自动匹配字母获取值的代码
Sep 23 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
Apr 25 Javascript
屏蔽相应键盘按钮操作
Mar 10 Javascript
EasyUI实现二级页面的内容勾选的方法
Mar 01 Javascript
九种原生js动画效果
Nov 11 Javascript
微信小程序图表插件(wx-charts)实例代码
Jan 17 Javascript
Javascript Event(事件)的传播与冒泡
Jan 23 Javascript
从零学习node.js之简易的网络爬虫(四)
Feb 22 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 Javascript
利用Vue实现一个markdown编辑器实例代码
May 19 Javascript
javascript实现导航栏分页效果
Jun 27 Javascript
javascript事件监听与事件委托实例详解
Aug 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
PHP获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
Javascript刷新页面的实例
2017/09/23 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
python绘制地震散点图
2019/06/18 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
毕业生自荐信格式
2014/03/07 职场文书
党性分析自查总结
2014/10/14 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
介绍信如何写
2015/01/31 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers