在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 相关文章推荐
dropdownlist之间的互相联动实现(显示与隐藏)
Nov 24 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
Sep 01 Javascript
JavaScript将一个数组插入到另一个数组的方法
Mar 19 Javascript
javascript通过元素id和name直接取得元素的方法
Apr 28 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
jQuery中$.each()函数的用法引申实例
May 12 Javascript
JavaScript实现in-place思想的快速排序方法
Aug 07 Javascript
聊一聊jQuery插件uploadify使用方法
Aug 24 Javascript
JavaScript常用代码书写规范的超全面总结
Sep 11 Javascript
js实现表单提交后不重新刷新当前页面
Nov 30 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
Nov 06 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
9个PHP开发常用功能函数小结
2011/07/15 PHP
php实现图片缩放功能类
2013/12/18 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
jQuery ajax cache缓存问题
2010/07/01 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
python实现一次创建多级目录的方法
2015/05/15 Python
Python中is和==的区别详解
2018/11/15 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
python操作toml文件的示例代码
2020/11/27 Python
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
网页美工求职信范文
2014/04/17 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电