@async 没有异步_扒一扒VueCLI3.0中Axios异步请求同步化

前台经常会遇到请求同步和异步的问题,今天咱们来聊一聊vue中同步请求和异步请求那些事儿。

01b651840012ad119a05cfbfa5f96254.png

说到接口的请求同步和异步问题,最早接触Ajax中就存在,Ajax传递的参数有一个async,默认情况下是false,也就是异步传输的,如果想阻塞浏览器的线程,将接口请求依次进行的化,需要将async参数设置为true。

到了es6时出现了Promise,这让我们脱离了需要多次回调的情况,到了es7时出现了async-await,那么async-await又有什么神奇之处呢?

Promise

Promise的出现是为了防止前台的进程被冻结,它的出现可以允许多个任务同时进行,也就是所谓的异步操作。

Promise主要用处在以下几点

  • 1. 用于异步处理操作
  • 2. 将异步操作队列化,按照顺序执行操作,并返回相应结果
  • 3. 在对象之间传递和操作promise,帮助处理队列中的操作方法

异步操作的主要用途包括事件的监听和事件的回调。自从前台使用nodejs进入常态化之后,无阻塞的处理高并发成为了重中之重,也就是处理好异步操作。

Promise的一个简单示例

0ac6d2c721daa1279c34554767f80df6.png

其中resolve返回成功的结果,reject返回失败的结果。

48dc816efc93f696829df84cca01505e.png

这个简单例子模拟promise的异步操作,2秒钟后返回hello world。

Promise.all() 可以批量执行

e312c8f4b3f18af102a92ce0c8ca599f.png
0aee689c13548e83d42a88994a1dd39f.png

返回结果可以看出,两个方法依次异步执行,等全部执行完毕后,一起输出结果,这在实际业务中相当有用!!!

Async-await

那么既然es6中已经有promise了,也相当好用,为什么在es7中又出现了async-await呢?

其实async-await是基于promise的,它是promise和generator的语法糖。Async-await可以让我们在使用promise时更加流畅,代码更加简洁。

Await不能够单独使用,它必须出现在async作用的方法中。从字面意思也可以看的出,wait就是等待的意思,也就是等着我执行完毕,相当于将异步方法同步化。

下面是一个async-await的小栗子

d53220f1cf30c49daa1b34736474958c.png
40b4a6154f3643c5c2e8bf394fe329e7.png

从执行的结果可以看出,浏览器执行async-await的顺序为,正常的表达式顺序执行,遇到promise的异步线程时,需要等待异步线程返回结果,然后顺序执行后面的方法,这样就可以将异步的方法同步化了。

如果顺序执行多个任务的话,可以明显看出async-await的优势了,代码如下:

a9042ed42c84b2cbbdb09cbd874f846b.png
e8912932c62b9addba77dce29ddb2e93.png

Axios中使用async-await进行同步化

在VueCLI3.0项目中集成axios进行后台接口的请求数据,有时候需要等待返回数据然后再进行下一步操作,如果是用ajax进行访问数据的话可以这样

10d95366572264eb733f2cf7037508cb.png

直接设置async参数为false即可。

然而axios没有ajax这样直接设置的参数,那怎么办呢?

所以就可以使用之前说到的async-await了,也就是使用 async-await 将 axios 异步请求同步化。

下面一个简单的栗子

0199c76f6d3cefc10e81d676c4e2cead.png

如果将返回的结果做不同处理的话,以可嵌套一次promise,如下

c433817cf26a6cc59308bebc20a36a85.png

小结

通过这一篇的讲解,讲述了前端程序的异步,包括promise的原理,用处,以及后来的async-await,并且了解了async-await的作用,最后将async-await用到了axios实例中,来解决axios的异步请求同步化问题。

希望这篇文章对前台异步请求同步化问题有困扰的朋友带来帮助。

感兴趣的可以加关注,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Platform Module系统中的可选依赖项

Java平台模块系统(JPMS)对依赖项有很强的见解:默认情况下,需要(必须可访问)它们,然后在编译时和运行时都将它们存在。 但是,这不适用于可选的依赖项,因为代码是针对运行时…

sqoop导出solr数据_Apache Atlas - 强大的元数据管理工具

构建和安装Apache Atlas构建Apache Atlas下载 Apache Atlas 1.0.0 发行版源码, apache-atlas-1.0.0-sources.tar.gz, 从 downloads 下载. 然后按照以下说明构建Apache Atlas。tar xvfz apache-atlas-1.0.0-sources.tar.gz cd apache-atlas-sources-1.0.0/ export MAVEN_OPTS&qu…

Mac入门--如何使用brew安装多个PHP版本

一 安装7.1 1. 安装PHP7.1 brew install php7.12. 修改配置 php-fpm.conf,一般在/usr/local/etc/php下(如果php-fpm.conf中不存在,则查找php-fpm.d目录) vim php-fpm.conflisten 127.0.0.1:90003. 启动PHP7.1 brew services start php7.14. 这时php-fpm会监听9000端…

python单例模式继承_python单例模式

单例模式是常见的一种设计模式,它是针对类的一种描述,因此,我们可以使用python的decorator来实现通用的单例模式。一.基本的单例模式首先建立我们的decorator。我们需要为classType建立_instance和_lock成员:Pythondef singleton(…

[MEGA DEAL]完整的Java编程训练营(94%)

成为Java Master的10门课程(83.5小时):使用JavaFX的设计UI,利用设计模式,Master Multithreading等 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了一个极端的报价…

【洛谷 1879】玉米田

题目描述农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地。John打算在牧场上的某几格里种上美味的草,供他的奶牛们享用。遗憾的是,有些土地相当贫瘠&#xf…

echarts的tree怎么控制位置_自动化考研保研面试—线性系统控制器设计

这个问题是我导师(面试组长)多次在保研考研面试的时候问过的,而且每年都会问!问题其实不难,涉及的知识点也就是自控原理经典控制理论的部分,但是基本上很少有人能够完整地回答出来,不服的话请看…

PCF上的Spring Cloud合同和Spring Cloud Services

最近,我们有一个客户,对于使用Spring Cloud Contract (SCC)来防止微服务团队之间的API“漂移”,微型开发团队需要由单个开发团队来照顾构成企业应用程序一部分的单个API的想法非常感兴趣。 Spring Cloud Contract是Sp…

MS Lync2010客户端开发体会

和前身OCS2007 相比较,Lync2010原生客户端的扩展性大大缩小了,但是提供了很好的客户端SDK,整个系统架构也有较大变化。由于Lync2010原生客户端实在太简单,用惯了QQ的国人,实在无法接受以下功能的缺失: 组织…

date javascript 时区_第23节 Datejs 日期库-Web前端开发之Javascript-零点程序员-王唯

Datejs 是一个开源的JavaScript库,用来解析、格式化和处理日期数据,支持多种语言的日期格式处理;官网:www.datejs.com/Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化、日期解析等功能。它…

制杖题

题目描述 求不大于 m 的、 质因数集与给定质数集有交集的自然数之和。 输入格式 第一行二个整数 n,m。 第二行 n 个整数,表示质数集内的元素 p[i]。 输出格式 一个整数,表示答案,对 376544743 取模。 输入输出样例 输入 #1复制 2 …

煤矿安全规程专家解读2016电子版_【学习】煤矿安全规程专家解读(165)

点击蓝字关注我们第二编 井工部分第三百三十三条爆破前,必须加强对机器、液压支架和电缆等的保护或将其移出工作面。爆破前,班组长必须亲自布置专人在警戒线和可能进入爆破地点的所有通路上担任警戒工作。警戒人员必须在安全地点警戒。警戒线处应设置警…

DC / OS中具有Java和数据库应用程序的服务发现

该博客将展示一个简单的Java应用程序如何使用DC / OS中的服务发现与数据库进行对话。 为什么要进行服务发现? 应用程序通常由多个组件组成,例如应用程序服务器,数据库,Web服务器,缓存和消息传递服务器。 通常&#xf…

RAC环境下创建本地数据文件的解决方法

引用收藏:http://blog.itpub.net/501889/viewspace-1083311/ 同事不小心,在RAC环境下创建了本地数据文件,这个肯定会出问题的,节点2不能访问此数据文件。其实发现做错了,立马删掉应该没有问题。数据文件还没有数据。下…

诺基亚n1平板电脑刷机教程_【个人记事本】闲鱼购买平板的经历

今年由于疫情原因,国内开展了全体学生在家学习的模式,这就避免不了老师发一些课件,还有一些录课的视频等电子学习资料等。考虑到开学复习的便利性(平板比笔记本电脑更具有便携性,更方便)。所以,…

找出一个字符串中出现次数最多的字_487,重构字符串

想了解更多数据结构以及算法题,可以关注微信公众号“数据结构和算法”,每天一题为你精彩解答。问题描述给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行&am…

一、数据设计规范

一、数据设计规范 1、表的前缀 1、表名称不应该取得太长(一般不超过三个英文单词。不推荐使用中文拼音,总的长度不要超过30个字符) 格式:Tbl_Wms_log 表示 表_Wms系统_log 好处:执行查询方式辨别SQL类别(T_表-Table、V_视图-View、S_存储过…

http缓存管理器_小心缓存管理器

http缓存管理器如果使用spring和JPA,则很有可能利用ehcache(或其他缓存提供程序)。 您可以在两种不同的情况下进行此操作:JPA 2级缓存和spring方法缓存。 配置应用程序时,通常会设置JPA提供程序的二级缓存提供程序&am…

cad线加粗怎么设置_AutoCAD2019怎么加粗线条 将不同线段加粗方法

AutoCAD2019是一款非常专业的制图软件,那有很多用户表示自己不知道这款软件怎么加粗线条,下面就通过这篇文章给大家介绍一下,一起往下看吧!如图所示,我用L命令绘制一根线段:,这根线段的宽度为默…

时间管理——你不可不知的3种时间管理方法

时间管理——你不可不知的3种时间管理方法 时间管理 英文名:Time Management   请问,如果每天都有86400元进入你的银行户头,而你必须当天用光,你会如何运用这笔钱?   天下真有这样的好事吗?   是的,…