在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 相关文章推荐
JQuery 技巧和窍门整理(8个)
Apr 22 Javascript
JS判断客服QQ号在线还是离线状态的方法
Jan 13 Javascript
JavaScript模拟实现继承的方法
Mar 30 Javascript
javascript实现table表格隔行变色的方法
May 13 Javascript
详解JavaScript按概率随机生成事件
Aug 02 Javascript
详解React native全局变量的使用(跨组件的通信)
Sep 07 Javascript
vue使用rem实现 移动端屏幕适配
Sep 26 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 Javascript
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
用js简单提供增删改查接口
May 12 Javascript
浅谈Three.js截图并下载的大坑
Nov 01 Javascript
微信小程序自定义胶囊样式
Dec 27 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中上传大体积文件时需要的设置
2006/10/09 PHP
PHP新手上路(七)
2006/10/09 PHP
笑谈配置,使用Smarty技术
2007/01/04 PHP
javascript 实用的文字链提示框效果
2010/06/30 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
[04:29]2014DOTA2国际邀请赛 主赛事第三日TOPPLAY
2014/07/21 DOTA
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python yield 使用浅析
2015/05/28 Python
python妹子图简单爬虫实例
2015/07/07 Python
python&MongoDB爬取图书馆借阅记录
2016/02/05 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
django2.0扩展用户字段示例
2019/02/13 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
机电专业大学生求职信
2013/10/04 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
高考学习决心书
2015/02/04 职场文书
优秀教师个人总结
2015/02/11 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
Go timer如何调度
2021/06/09 Golang