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

  • 什么叫应纳税所得额
  • 外贸企业的出口收入免征其地方水利建设基金
  • 纳税人资格类型有哪些
  • 减免所得税额怎么做分录
  • 异地缴纳税款
  • 工程结算成本和合同成本区别
  • 银行贷款印花税是什么意思
  • 个人开劳务发票怎么开
  • 外资企业采购流程
  • 行政事业单位工资标准
  • 出口退税进项税额可以抵扣吗
  • 公司收到的其他发票
  • 已经计提的坏账准备可以转回吗
  • 幼儿园幼儿买花的通知
  • 发票对方认证不了怎么回事
  • 企业所得税属于什么科目
  • 停车费要交税吗
  • 核定征收的公司用做账么
  • 清包工程增值税税率
  • 哪些进项税不能加计抵减
  • 在会计上跨季度增值税专用发票怎么进行红冲?
  • 公司帮员工缴纳个税,不从工资里扣,如何做账
  • 暂估金额与发票金额的区别
  • 生产工人工资和福利费是产品成本项目
  • 存货资产减值损失转回怎么做账
  • 当期应交所得税怎么计算
  • 季报根据什么申报
  • 税盘的服务费
  • 无法收回的分公司怎么办
  • 保护地址是什么意思
  • 企业备用金多久还款
  • 税收风险应对措施包括
  • if.else
  • 工伤索赔的赔偿金额
  • 'The Wave' sandstone formation in Coyote Buttes North, Paria Canyon-Vermilion Cliffs National Monument, Arizona (© Dennis Frates/Alamy)
  • php年月日时间代码
  • ai数字绘画设计培训
  • 借管理费用贷应交税费个人所得税
  • 商业银行贷款业务按担保形式分,可分为( )
  • 应收保费核算什么
  • 如果已经结帐,发现凭证有误,应该如何处理
  • 总公司发票可以入账分公司吗怎么做账
  • python3 静态方法
  • 年初未分配利润在借方表示什么
  • 个人所得税两处或两处以上工资、薪金所得纳税申报表
  • 员工门诊收费票据可以入账吗
  • 新公司第一年要交什么税
  • 结转上年
  • 处置固定资产亏损,增值税所得税申报不一至情况说明
  • 多缴附加税退税怎么做账
  • 固定资产一次性扣除政策
  • 暂估的原材料用不用记原材料明细账
  • 接受捐赠的固定资产按什么入账
  • 股东所有者权益负数
  • 股权转让是否需要全体股东签字
  • 资本公积的意思是
  • 单式记账法因为其简单易学,记账效率高
  • 来料加工和进料加工的相同之处
  • 房屋租赁税按什么收
  • 叉车累计折旧如何结转
  • 从农民手里租用土地用于科研要开发票吗
  • 5000元固定资产一次性计提折旧
  • sql如何对两个表数据求和
  • win2000系统安装教程
  • 开机越来越慢会不会是硬件的问题
  • unix命令大全
  • linux0.11文件系统
  • jquery鼠标点击
  • android4.4w
  • linux列操作
  • android图片库
  • shell常用命令及功能
  • windows批量添加文件后缀
  • Python 正则表达式入门(初级篇)
  • dom操作的方法
  • 谷歌chrome浏览器网页版网址
  • javascript的基本规范
  • jquery常用的5个方法
  • 国家税务总局公告2022年第9号
  • 税务鉴定收费标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设