在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 相关文章推荐
js几个不错的函数 $$()
Oct 09 Javascript
CSDN轮换广告图片轮换效果
Mar 27 Javascript
javascript 图片裁剪技巧解读
Nov 15 Javascript
javascript实现playfair和hill密码算法
Dec 07 Javascript
node.js中的http.request.end方法使用说明
Dec 10 Javascript
JavaScript设计模式之外观模式介绍
Dec 28 Javascript
基于jQuery实现仿微博发布框字数提示
Jul 27 Javascript
利用Angularjs中模块ui-route管理状态的方法
Dec 27 Javascript
angularjs2中父子组件的数据传递的实例代码
Jul 05 Javascript
从零开始搭建vue移动端项目到上线的步骤
Oct 15 Javascript
基于vue通用表单解决方案的思考与分析
Mar 16 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 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循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
JS解析XML的实现代码
2009/11/12 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
node.js的事件机制
2017/02/08 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
python Tkinter的图片刷新实例
2019/06/14 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
allbeauty美国:英国在线美容店
2019/03/11 全球购物
大学生饮食配送创业计划书
2014/01/04 职场文书
实验室的标语
2014/06/20 职场文书
单位接收函范文
2015/01/30 职场文书
清洁工个人工作总结
2015/03/05 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS
python 详解turtle画爱心代码
2022/02/15 Python