在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 相关文章推荐
会自动逐行上升的文本框
Jun 30 Javascript
Javascript 二维数组
Nov 26 Javascript
IE中图片的onload事件无效问题和解决方法
Jun 06 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
Aug 18 Javascript
浅谈javascript的Array.prototype.slice.call
Aug 31 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
May 12 Javascript
JavaScript实现一个空中避难的小游戏
Jun 06 Javascript
详解create-react-app 自定义 eslint 配置
Jun 07 Javascript
小程序实现抽奖动画
Apr 16 Javascript
Node.js JSON模块用法实例分析
Jan 04 Javascript
js实现限定区域范围拖拉拽效果
Nov 20 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面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
PHP实现递归的三种方法
2020/07/04 PHP
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
setTimeout学习小结
2017/02/08 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
Python实现的二维码生成小软件
2014/07/11 Python
python根据出生日期获得年龄的方法
2015/03/31 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
详解爬虫被封的问题
2019/04/23 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
Farah官方网站:男士服装及配件
2019/11/01 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
中学生学习生活的自我评价
2013/10/26 职场文书
初中生学习的自我评价
2013/11/14 职场文书
应用化学专业职业生涯规划书
2013/12/31 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python
MYSQL 表的全面总结
2021/11/11 MySQL
Django框架中表单的用法
2022/06/10 Python