javascript-Promise.all和等待状态的性能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-Promise.all和等待状态的性能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1370字,纯文字阅读大概需要2分钟。
内容图文
![javascript-Promise.all和等待状态的性能](/upload/InfoBanner/zyjiaocheng/686/6818907b96be41f78b7fd868e02fd62e.jpg)
在所有承诺均得到解决的假设下,异步迭代(for-await-of循环)是否比使用Promise.all更快?
从specification on asynchronous iteration:
Each time we access the next value in the sequence, we implicitly
await
the promise returned from the iterator method.
使用异步迭代:
let pages = [fetch('/echo/json/'), fetch('/echo/html/'), fetch('/echo/xml/')]
for await (let page of pages) {
console.log(page)
}
使用Promise.all:
let pages = await Promise.all([fetch('/echo/json/'), fetch('/echo/html/'), fetch('/echo/xml/')])
pages.forEach(page => console.log(page))
他们两个都并行获取页面,但是我想知道异步迭代是否在所有页面完成获取之前开始循环.我曾尝试在浏览器的devtools中限制网络,以模拟这种情况,但是任何差异仍然很少被注意到.
解决方法:
Is asynchronous iteration (for-await-of loop) faster than using Promise.all?
否.当最后一个承诺解决时,循环和Promise.all都将完成,大致同时.如果最后要解决的承诺是数组中的第一个承诺,则Promise.all会立即完成,而循环仍必须迭代其他元素,这可能会导致少量开销,但这无关紧要.真正重要的唯一情况是:
如果其中一个承诺被拒绝,Promise.all会立即退出,而循环必须达到该承诺.
I’m wondering if asynchronous iteration starts looping before all the pages are finished fetching.
是的,您可以早一点得到第一个结果,但是所有结果将同时可用.如果您想向用户显示数据,则使用for循环是有意义的,因为他可以在其余数据仍在获取的同时开始读取数据;但是,如果您想累积数据,则等待它们都是有意义的,因为这简化了迭代逻辑.
内容总结
以上是互联网集市为您收集整理的javascript-Promise.all和等待状态的性能全部内容,希望文章能够帮你解决javascript-Promise.all和等待状态的性能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。