在JS循环中使⽤asyncawait的⽅法
async / await是ES7的重要特性之⼀,也是⽬前社区⾥公认的优秀异步解决⽅案。⽬前,async / await这个特性已经是stage 3的建议,可以看看TC39的进度,本篇⽂章将分享在JS循环中使⽤async/await的⽅法.
在开发maty.js时,遇到⼀个数组任务,数组项是内部异步执⾏的函数,期望是同步依次执⾏每项函数,每项函数执⾏完本⾝的异步任务后,继续下⼀项。await和async使用方法
刚开始单纯使⽤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的⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论