在JS循环中使用async/await的方法
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的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
这篇文章主要介绍了微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖),需要的朋友可以参考下2019-09-09
详解JavaScript中的Object.is()与"==="运算符总结
这篇文章主要介绍了详解JavaScript中的Object.is()与"==="运算符总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-06-06
Bootstrap3使用typeahead插件实现自动补全功能
这篇文章主要介绍了Bootstrap3使用typeahead插件实现自动补全功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-07-07


最新评论