在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 confirm选择判断
Oct 18 Javascript
JavaScript+CSS控制打印格式示例介绍
Jan 07 Javascript
js获取ajax返回值代码
Apr 30 Javascript
javascript文本模板用法实例
Jul 31 Javascript
js跨域资源共享 基础篇
Jul 02 Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
Dec 03 Javascript
vue input实现点击按钮文字增删功能示例
Jan 29 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
May 14 Javascript
如何用原生js写一个弹窗消息提醒插件
May 24 Javascript
javascript实现时间日期的格式化的方法汇总
Aug 06 Javascript
JS removeAttribute()方法实现删除元素的某个属性
Jan 11 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
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
JSON 数据格式详解
2017/09/13 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
js中数组对象去重的两种方法
2019/01/18 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
Python中使用Inotify监控文件实例
2015/02/14 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
专科毕业生求职简历的自我评价
2013/10/12 职场文书
信息管理员岗位职责
2013/12/01 职场文书
业务部经理岗位职责
2014/01/04 职场文书
素食餐饮项目创业计划书
2014/02/02 职场文书
产品质量保证书
2014/04/29 职场文书
评先进个人材料
2014/12/29 职场文书
2015年幼师工作总结
2015/04/28 职场文书
遗嘱范文
2015/08/07 职场文书
党校培训学习心得体会
2016/01/06 职场文书
postgresql中如何执行sql文件
2023/05/08 PostgreSQL