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

  • 最新劳务报酬的个税计算方法?
  • 房租租赁房产税由哪方缴纳
  • 固定资产计提折旧计入什么科目
  • 进项税额已抵扣转出会计分录
  • 印花税的纳税人为书立合同双方
  • 企业税金包括
  • 赊销固定资产会计科目
  • 出差旅费补助报销明细表需要发票吗?
  • 子公司的财报和母公司的财报并表吗
  • 施工企业预算怎么编制
  • 携程电子发票可以发到QQ邮箱吗
  • 电子钥匙续费能退款吗
  • 中药饮片适用增值税税率
  • 小规模可以收专票当费用票吗
  • 非营利组织取得稳岗补贴收入要交税吗
  • 普通发票单张限额
  • 小规模纳税人能抵扣进项发票吗
  • 金蝶k3初始余额录入打不进字
  • 坏账准备对利润表
  • 实收资本减值会计处理
  • 免税的普通发票怎么开
  • 1697511073
  • win10无法登录微信
  • 升级华为鸿蒙系统怎么样
  • 简易征收增值税怎么算
  • 苹果电脑里的finder是什么
  • movie maker是什么软件
  • 哪些合同不属于担保合同
  • 机器学习-10 聚类算法
  • 事业单位接受捐赠固定资产入账
  • 推荐国内免费使用的电影
  • 车辆购置税发票图片
  • 小规模纳税人增值税免税政策
  • 承兑汇票无法兑付
  • 车道线检测视频素材
  • php实现当前页面的快捷键
  • 帝国cms手机端点击加载不动怎么弄
  • 预扣预缴申报未缴税款
  • 餐厅场租费可以开发票吗
  • 科技公司技术服务费税率
  • 库存商品出库分类
  • linux安装ms
  • mysql Event Scheduler: Failed to open table mysql.event
  • 合伙人资本属于个人资本吗?
  • 预收一年房租的会计科目
  • 办公桌椅入什么会计科目
  • 现金流量表补充资料怎么理解
  • 主营业务成本和主营业务收入的关系
  • 营改增后建筑行业进项税能抵扣吗
  • 生产成本和主营业务成本金额一样吗
  • 资产质量的相对性举例说明
  • mysql新手入门
  • win2003和xp一样吗
  • 如何将用户加入某个组
  • mac键盘图标与对应不匹配
  • windows7没有声音怎么调
  • win10系统永久激活软件
  • linux怎么配置vim
  • Windows 8 Modern Apps 网络隔离如何解除?
  • linux怎么配置raid
  • android studio ndk开发教程
  • cocos2dx 3.0 beta android环境配置
  • cocos安装
  • unity调用android方法
  • opengl绘制三维图形代码
  • java美化按钮
  • node.js可以跨平台吗
  • node.js使用教程
  • 批处理语言 从入门到精通
  • python标准库很庞大,它可以帮助处理各种工作,包括
  • 菜鸟教程安卓开发
  • 用python写多线性模型
  • python里!
  • node+express+ejs使用模版引擎做的一个示例demo
  • iphone触控手势
  • 猫的游戏视频
  • bpc什么时候进入中国
  • 安康市税务局党玲玲
  • 上海买房各种税
  • 全国书法等级考试官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设