在JS循环中使用async/await的方法


Posted in Javascript onOctober 12, 2018

async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案。目前,async / await这个特性已经是stage 3的建议,可以看看TC39的进度,本篇文章将分享在JS循环中使用async/await的方法.

在开发maty.js时,遇到一个数组任务,数组项是内部异步执行的函数,期望是同步依次执行每项函数,每项函数执行完本身的异步任务后,继续下一项。

刚开始单纯使用map来循环执行,并且await每项函数。如下所示:

starters.map(async (fn, i)=> {
 console.log('++++++++++: ', i)
 await fn(ctx);
});

结果是依次先输出了索引i,而不是阻塞每次循环,按期望执行。

搬出Google大法,可以看出对在 for…of 循环语法中使用await是有效的。

for (const fn of starters) {
 await fn(ctx);
}

同时文章中指出使用Promise.all,是无法解决当前问题的,因为all方法是并行运行的。很奇怪为什么没有串行执行的原生方法。

总结

以上所述是小编给大家介绍的在JS循环中使用async/await的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ExtJS 下拉多选框lovcombo
May 19 Javascript
js实现翻页后保持checkbox选中状态的实现方法
Nov 03 Javascript
ActiveX控件与Javascript之间的交互示例
Jun 04 Javascript
高性能JavaScript模板引擎实现原理详解
Feb 05 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
May 13 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
详解js中构造流程图的核心技术JsPlumb
Dec 08 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
Aug 28 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
Oct 19 Javascript
详解js访问对象的属性和方法
Oct 25 Javascript
ECharts transform数据转换和dataZoom在项目中使用
Dec 24 Javascript
代码实例ajax实现点击加载更多数据图片
Oct 12 #Javascript
vue项目环境变量配置的实现方法
Oct 12 #Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 #Javascript
原生JS实现轮播图效果
Oct 12 #Javascript
详解KOA2如何手写中间件(装饰器模式)
Oct 11 #Javascript
Element Input组件分析小结
Oct 11 #Javascript
element el-input directive数字进行控制
Oct 11 #Javascript
You might like
PHP调用Webservice实例代码
2011/07/29 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
PHP的反射机制实例详解
2017/03/29 PHP
js单例模式详解实例
2013/11/21 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
python中split方法用法分析
2015/04/17 Python
python实现bucket排序算法实例分析
2015/05/04 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
python中subprocess批量执行linux命令
2018/04/27 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
Python gevent协程切换实现详解
2020/09/14 Python
Python用SSH连接到网络设备
2021/02/18 Python
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
JSP&Servlet技术面试题
2015/05/21 面试题
临床专业自荐信
2014/06/22 职场文书
交通处罚决定书
2015/06/24 职场文书
新教师教学工作总结
2015/08/12 职场文书
多人股份制合作协议书
2016/03/19 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python