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中的parseInt使用技巧
Sep 03 Javascript
动态加载外部javascript文件的函数代码分享
Jul 28 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
Dec 25 Javascript
jQuery拖动布局其结果保存到数据库
Oct 09 Javascript
JavaScript中原型链存在的问题解析
Sep 25 Javascript
jQuery动态增减行的实例代码解析(推荐)
Dec 05 Javascript
jQuery Masonry瀑布流插件使用方法详解
Jan 18 Javascript
JS实现动态给标签控件添加事件的方法示例
May 13 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
详解node child_process模块学习笔记
Jan 24 Javascript
微信小程序自定义组件实现tabs选项卡功能
Jul 14 Javascript
vue3自定义dialog、modal组件的方法
Jan 04 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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
分享PHP守护进程类
2015/12/30 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
详解php协程知识点
2018/09/21 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
犀利的js 函数集合
2009/06/11 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
python django中8000端口被占用的解决
2019/12/17 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
Linux机考试题
2015/10/16 面试题
租房协议书范本
2014/04/09 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
java解析XML详解
2021/07/09 Java/Android