在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 相关文章推荐
JavaScript 函数replace深入了解
Mar 14 Javascript
JavaScript中的无阻塞加载性能优化方案
Oct 10 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
详解Matlab中 sort 函数用法
Mar 20 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
Sep 05 Javascript
在vue项目中引入highcharts图表的方法
Jan 21 Javascript
vue自定义指令之面板拖拽的实现
Apr 14 Javascript
轻松解决JavaScript定时器越走越快的问题
May 13 Javascript
NProgress显示顶部进度条效果及使用详解
Sep 21 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下载生成的csv文件及问题总结
2015/08/06 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
使用D3.js制作图表详解
2017/08/13 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
javascript的惯性运动实现代码实例
2019/09/07 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
详解Python学习之安装pandas
2019/04/16 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
python中如何使用insert函数
2020/01/09 Python
最小二乘法及其python实现详解
2020/02/24 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
岗位职责的构建方法
2014/02/01 职场文书
2015年招聘工作总结
2014/12/12 职场文书
离婚协议书范文
2015/01/26 职场文书
出国留学导师推荐信
2015/03/26 职场文书
关于童年的读书笔记
2015/06/26 职场文书
物业保洁员管理制度
2015/08/05 职场文书
学生会任命书范本
2015/09/21 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP