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代码(如:name,age)
Aug 10 Javascript
什么是json和jsonp,jQuery json实例详详细说明
Dec 11 Javascript
jQuery取得select选择的文本与值的示例
Dec 09 Javascript
防止登录页面出现在frame中js代码
Jul 22 Javascript
JavaScript将字符串转换为整数的方法
Apr 14 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
Sep 14 Javascript
React Native实现地址挑选器功能
Oct 24 Javascript
javascript将json格式数组下载为excel表格的方法
Dec 22 Javascript
webpack4.x开发环境配置详解
Aug 04 Javascript
Vue组件之高德地图地址选择功能的实例代码
Jun 21 Javascript
layui 实现自动选择radio单选框(checked)的方法
Sep 03 Javascript
vue实现短信验证码登录功能(流程详解)
Dec 10 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 三维饼图的实现代码
2008/09/28 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
跟老齐学Python之折腾一下目录
2014/10/24 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
Python实现的爬虫功能代码
2017/06/24 Python
python实现日常记账本小程序
2018/03/10 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
高中生自我评价个人范文
2013/11/09 职场文书
校园文明标语
2014/06/13 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
贫困证明怎么写
2015/06/16 职场文书
导游词之青城山景区
2019/09/27 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
Pytorch可视化的几种实现方法
2021/06/10 Python