在JS循环中使用async/await的方法

2018-10-12 24 mrr

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 获取Listbox选择的值的代码
Apr 15 20
javascript使用中为什么10..toString()正常而10.toString()出错呢
Jan 11 27
JS+CSS实现感应鼠标渐变显示DIV层的方法
Feb 20 13
jQuery学习笔记之Ajax用法实例详解
Dec 01 22
深入浅析JavaScript中with语句的理解
May 12 26
PhotoSwipe异步动态加载图片方法
Aug 25 27
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
Apr 27 53
手机访问当前页面