在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 兼容鼠标滚轮事件
Apr 07 Javascript
防止动态加载JavaScript引起的内存泄漏问题
Oct 08 Javascript
Jquery练习之表单验证实现代码
Dec 14 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
Dec 22 Javascript
express的中间件basicAuth详解
Dec 04 Javascript
JavaScript中的small()方法使用详解
Jun 08 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
Oct 23 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
Django+vue跨域问题解决的详细步骤
Jan 20 Javascript
jquery实现点击左右按钮切换图片
Jan 27 jQuery
代码实例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
Yii全局函数用法示例
2017/01/22 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
详解react如何在组件中获取路由参数
2017/06/15 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
小学生学习保证书
2015/02/26 职场文书
赤壁观后感(2)
2015/06/15 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js