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 相关文章推荐
基础的prototype.js常用函数及其用法
Mar 10 Javascript
javascript实现图片循环渐显播放的方法
Feb 24 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
Sep 05 Javascript
JS调用打印机功能简单示例
Nov 28 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 Javascript
JavaScript防止全局变量污染的方法总结
Aug 02 Javascript
vue-cli3+typescript初体验小结
Feb 28 Javascript
深入理解react 组件类型及使用场景
Mar 07 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
Apr 22 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
Sep 19 Javascript
vue中使用[provide/inject]实现页面reload的方法
Sep 30 Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 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类型约束用法示例
2016/09/28 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python操作Excel之xlsx文件
2017/03/24 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
python全栈开发语法总结
2020/11/22 Python
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
药店主任岗位责任制
2014/02/10 职场文书
个人承诺书怎么写
2014/05/24 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
运动会通讯稿100字
2015/07/20 职场文书
Python WSGI 规范简介
2021/04/11 Python
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
一文搞懂MySQL索引页结构
2022/02/28 MySQL
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫