位置: IT常识 - 正文

解决axios异步请求问题(异步变为同步)(axios异步请求数据)

编辑:rootadmin
解决axios异步请求问题(异步变为同步) 遇到的问题

推荐整理分享解决axios异步请求问题(异步变为同步)(axios异步请求数据),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:async异步请求,axios处理异常,异步处理失败提示,async await异步请求,async异步请求,axios处理异常,async await异步请求,axios处理异常,内容如对您有帮助,希望把文章链接给更多的朋友!

在目前一个需求中,我需要等待axios请求完成后,判断请求是否出现异常,然后来判断是否关闭弹窗

修改后大概代码如下:

async submitForm() { let flag = false //表单验证,默认通过 let formValidation = true this.$refs['vForm'].validate(valid => { if (!valid){ formValidation = false } //TODO: 提交表单 }) if (formValidation === true){ //这里需要使用await,否则不会等待该方法运行完成 await insertIllegalInfo(this.formData).then(res=>{ this.$message.success("新增成功") flag = true console.log("新增成功了") console.log(flag) }) } console.log("提交马上返回了") console.log(flag) return flag},

原来在方法中没有使用async和await,由于发送的axios请求是异步请求,所以在请求还没完成的时候submitForm这个方法就已经将flag返回了

这就导致了一个问题,如果我在后端在处理请求的时候出现异常,我在这里无法进行处理

经过百度搜索,发现使用async+await能够解决该问题,将异步方法改为同步方法,在方法前面加上async进行修饰,然后在axios请求前使用await进行修饰即可,这样就不会出现异步的问题

解决axios异步请求问题(异步变为同步)(axios异步请求数据)

这个问题解决后,又出现了一个新的问题,就是我在这里不是返回了一个flag吗,我在另外一个vue页面中需要获取到return返回的这个flag,但是按照正常步骤获取不到

后来经过查询资料后发现了原因,如下:

async 是一个修饰符,async 定义的函数会默认的返回一个Promise对象resolve的值,因此对async函数可以直接进行then操作,返回的值即为then方法的传入函数。

await 也是一个修饰符,await 关键字 只能放在 async 函数内部, await关键字的作用 就是获取 Promise中返回的内容, 获取的是Promise函数中resolve或者reject的值。

async/await 是一种编写异步代码的新方法。之前异步代码的方案是回调和 promise。

async/await 是建立在 promise 的基础上。(如果对Promise不熟悉,我已经着手在写Promise的文章了)

async/await 像 promise 一样,也是非阻塞的。

async/await 让异步代码看起来、表现起来更像同步代码。这正是其威力所在。

主要原因就是async 定义的函数会默认的返回一个Promise对象resolve的值,所以我们需要使用then去进行取值,如下

submitInsertIllegalInfoDialog(){ //重要的是这里,这里调用了上面说的的submitForm方法 this.$refs.insertIllegalInfoDialog.submitForm().then(flag=>{ console.log(flag) if (flag === true){ console.log("马上关闭弹窗了") //这个是来关闭弹窗的 this.insertIllegalInfoDialogVisible = false console.log("重新查询") this.getIllegalInfoList() this.$refs.insertIllegalInfoDialog.resetForm(); } })},总结

学会async和await的使用能够让我在开发vue项目的时候更加灵活,之后在遇到axios异步请求冲突的时候可以参考本篇文章进行解决

本文链接地址:https://www.jiuchutong.com/zhishi/284043.html 转载请保留说明!

上一篇:克卢恩国家公园保护区的山脉和冰川,加拿大育空地区 (© Design Pics Inc/Alamy)(加拿大克卢恩国家公园)

下一篇:js遍历map(js遍历map对象)(js map foreach遍历)

  • 分公司承担总公司差旅
  • 企业卖车需要交印花税吗
  • 制造业的税率是多少啊
  • 劳务什么情况下会多扣税
  • 2020年国税申报截止到什么时候
  • 工作未满12个月被辞退时前月平均工资怎么计算
  • 国有企业驻外人员待遇
  • 税务系统有问题
  • 房地产老项目增值税简易计税
  • 专票已认证但又没有发票
  • 借方增加的科目记忆口诀
  • 陈列费表格
  • 个体工商户税收怎么算
  • 技术转让所得减去成本吗
  • 公司房租可以抵多少税
  • 环评费用计入管理费用吗 是否需要摊销
  • 税务代开劳务费税点如何确定
  • 银行转账备用金是什么意思
  • 发票可以作为原始凭证吗
  • 符合条件的小微企业,减按20%
  • 拆迁安置房如何更名
  • 收到货款未发货可以开发票吗
  • linux批量操作工具
  • 内部控制的类型有哪些
  • 净资产有哪些科目
  • 财政拨款事业单位和全额事业单位
  • 零申报 社保
  • 坏狼变身记简介
  • macbookpro安装dmg
  • 销项负数发票怎么报税
  • PHP:curl_multi_info_read()的用法_cURL函数
  • 公司的对公账户
  • 修改配置文件是什么意思
  • php新手入门
  • 冲回暂估分录
  • vue获取input
  • php实现分页显示
  • phpsql查询
  • react路由exact
  • 图像边缘检测的基本原理
  • parted命令详解
  • 现金股利什么时候到账
  • 支付的劳务费是什么意思
  • 一般人转小规模政策到什么时候
  • wordpress 批量添加标签
  • 其他应付款转实收资本股东会决议
  • sqlserver2008新建实例
  • sql2008收缩日志文件
  • sqlserver2005简介
  • 增值税专用发票和普通发票的区别
  • 银行转账凭证可以保留多久
  • 报销差旅费会计分录退回现金
  • 减免增值税的相关规定
  • 建设期利息有哪些
  • 视同销售但未收到钱怎么做账?
  • 新成立公司季初资产总额是填1
  • 营业成本包括哪些会计科目
  • mysql数据聚合
  • windows server能干嘛
  • windows命令操作
  • Win10 Mobile 14393.321终于修复Lumia636/638导航栏遮挡
  • win8引导文件
  • win8.1无法安装vmware tools
  • Javascript HTML5 Canvas实现的一个画板
  • shell脚本数组的用法
  • shell脚本 if -e
  • 浏览器隐藏用法
  • Python随机生成均匀不重复的数
  • js出错
  • jquery点击切换背景颜色
  • nginx与php
  • Unity for Absolute Beginners(一)
  • canvas的原理
  • unity3d文件怎么查看和修改
  • 一种新的运算符号类型的题
  • 交管12123怎么打电话
  • 福建省税务报税系统官网
  • 日常生活中有哪些税
  • 国际税务师证书
  • 放管服中的服的深层含义
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设