在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 RegExp方法获取地址栏参数(面向对象)
Mar 10 Javascript
什么是DOM(Document Object Model)文档对象模型
Mar 05 Javascript
JavaScript 异常处理 详解
Feb 06 Javascript
js精准的倒计时函数分享
Jun 29 Javascript
原生js实现可拖动的登录框效果
Jan 21 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
Mar 09 Javascript
Angular 4 指令快速入门教程
Jun 07 Javascript
JQuery样式与属性设置方法分析
Dec 07 jQuery
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
js实现特别简单的钟表效果
Sep 14 Javascript
vue实现单一筛选、删除筛选条件
Oct 26 Javascript
JS前端可扩展的低代码UI框架Sunmao使用详解
Jul 23 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
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
Python多线程编程简单介绍
2015/04/13 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
python实现汽车管理系统
2018/11/30 Python
python实现倒计时小工具
2019/07/29 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
Python如何计算语句执行时间
2019/11/22 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
奥地利网上书店:Weltbild
2017/07/14 全球购物
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
数控技术专业毕业自荐书范文
2014/02/05 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
党员证明模板
2015/06/19 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL