在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 相关文章推荐
js 字符串操作函数
Jul 25 Javascript
jQuery 阴影插件代码分享
Jan 09 Javascript
js控制iframe的高度/宽度让其自适应内容
Apr 09 Javascript
解决checkbox的attr(checked)一直为undefined问题
Jun 16 Javascript
JavaScript DOM进阶方法
Apr 13 Javascript
Svg.js实例教程及使用手册详解(一)
May 16 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
Jun 21 Javascript
深入理解jquery中的each用法
Dec 14 Javascript
初学node.js中实现删除用户路由
May 27 Javascript
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 Javascript
node.js开发辅助工具nodemon安装与配置详解
Feb 06 Javascript
详解JavaScript中Arguments对象用途
Aug 30 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 serialize()与unserialize()的用法
2013/06/05 PHP
php创建无限级树型菜单
2015/11/05 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
幼儿园大班毕业感言
2014/02/06 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
迟到检讨书
2015/01/26 职场文书
应聘教师求职信范文
2015/03/20 职场文书
让世界充满爱观后感
2015/06/10 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL