位置: 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遍历)

  • 增值税纳税申报时间
  • 委托加工业务的会计处理
  • 车船税每年都要交吗,一般是多少钱交强险可以晚交吗
  • 银行借记和贷记的区别是什么
  • 开具运输发票应备注哪些内容
  • 企业所得税完税凭证在哪里打印
  • 自然人城建税减半征收
  • 净资产出资账务处理流程
  • 预缴增值税时可抵扣吗
  • 划拨土地使用权出租
  • 专票上没写开户行合规吗
  • 转账支票必须对着开发票单位吗?
  • 对于税收会计记账科目应该如何设置?
  • 国税和地税分别占多少
  • 上个月开的增值税发票这个月可以作废吗
  • 国税的申报表季报本月数如何填写?
  • 怎么查找地方教育附加税的计税依据?
  • 商品销售税金及附加科目现在改了吗
  • 打印机第一行未赋码
  • 小规模纳税人金额
  • 建筑业在外地预缴的所得税能退吗
  • 旅游业要怎么进行差额征税处理
  • 增值税专用发票电子版
  • 购买方已抵扣
  • 销售净利率怎么求
  • 简易征收是优惠政策吗
  • 公司年度财务报告怎么写
  • 收取赔偿金开具什么发票
  • 修缮房屋的防水工程的账务处理?
  • mac怎么连接蓝牙鼠标
  • 如何修改mac系统密码
  • windows10找不到用户和组
  • 合伙企业生产经营所得
  • win11有什么升级
  • 技术服务辅助设施包括
  • chcfg.exe是什么
  • 酒店加盟管理费多少
  • 本季度企业所得税
  • 企业无偿借款的税务处理
  • 网站变成灰色什么时候恢复
  • 基于Perclos&改进YOLOv7的疲劳驾驶DMS检测系统(源码&教程)
  • 劳保用品会计科目进什么科目
  • 2022前端面试题及答案
  • 航天金税服务费280不交
  • 待认证进项税额是二级科目还是三级科目
  • 城市道路占用费的收费标准
  • 货代一般一个柜利润多少
  • 存货成本核算方法的多久变更
  • 信用减值借贷方向增减
  • 个体户也需要纳税吗
  • 付款方和发票抬头不一致会计处理
  • 银行承兑汇票到期未承兑怎么办
  • 增值税留抵税额借贷方向
  • 基本生产成本和生产成本
  • 税金及附加是按什么基础交的
  • 电子口岸登录显示证书错误
  • 公司购买垃圾袋纸巾摘要怎么写好
  • where条件加判断
  • mysql按字节截取
  • xp系统弹出广告怎么处理
  • 删除默认操作系统选项
  • solaris x86软件 sparc 区别
  • linux删除大量文件方法
  • win10系统设备管理器没有蓝牙
  • spoolsrv.exe - spoolsrv是什么进程 有什么作用
  • xp怎么删除电脑系统
  • Linux查看文件的大小
  • win1021年更新
  • win7打开软件总提示错误怎么解决
  • JavaScript实现QQ列表展开收缩扩展功能
  • pythonreduce函数的作用
  • Unity3D游戏开发培训课程大纲
  • js获取0-100随机数
  • Python HTTP客户端自定义Cookie实现实例
  • javascript制作简易计算机
  • linux shell脚本攻略(第3版)
  • c语言node定义
  • Jquery实现$.fn.extend和$.extend函数
  • 济南高新区地税局地址
  • 个税系统崩溃
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设