在JS循环中使用async/await的方法
程序员文章站
2023-12-03 18:16:46
async / await是es7的重要特性之一,也是目前社区里公认的优秀异步解决方案。目前,async / await这个特性已经是stage 3的建议,可以看看tc39...
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中处理字符串之link()方法的使用
-
thinkPHP框架中layer.js的封装与使用方法示例
-
在JS循环中使用async/await的方法
-
在Javascript中处理数组之toSource()方法的使用
-
在JavaScript中操作数组之map()方法的使用
-
在JavaScript中处理数组之reverse()方法的使用
-
在JavaScript中操作时间之getMonth()方法的使用
-
在JavaScript中处理时间之getHours()方法的使用
-
深入理解在JS中通过四种设置事件处理程序的方法
-
在JS中操作时间之getUTCMilliseconds()方法的使用