Promise.all 如何简化异步 URL 获取以提高效率?
Oct 28, 2024 am 04:36 AM异步 URL 获取:利用 Promise.all 提高效率
Promise.all 实用程序是并发执行序列的关键手段异步任务。开始获取 URL 数组的任务时,我们的目标是获得封装相应文本内容的类似数组。在深入研究这一努力之前,有必要对某些尝试方法的缺点进行反思。
下面的代码片段在尝试实现我们的目标时,未能达到目标:
var promises = urls.map(url => fetch(url)); var texts = []; Promise.all(promises) .then(results => { results.forEach(result => result.text()).then(t => texts.push(t)) })
登录后复制
首先,这个实现在概念上是有缺陷的,因为 forEach 函数既不返回数组也不返回承诺,使其无效。其次,代码缺乏必要的嵌套来适当处理文本提取的异步性质。
要纠正这些缺点,需要采取多方面的方法。我们首先在 URL 数组上调用 Promise.all,检索代表各个获取操作的 Promise 数组。成功完成这些初始提取后,将使用第二次 Promise.all 调用从响应主体中捕获文本内容。然后将封装的文本值聚合到一个内聚数组中。以下代码优雅地捕捉了这种方法的本质:
Promise.all(urls.map(u => fetch(u))).then(responses => Promise.all(responses.map(res => res.text())) ).then(texts => { // Proceed with texts array... })
登录后复制
此策略的简化变体涉及在初始获取承诺履行期间直接提取响应正文:
Promise.all(urls.map(url => fetch(url).then(resp => resp.text()) )).then(texts => { // Proceed with texts array... })
登录后复制
或者更简洁地使用await:
const texts = await Promise.all(urls.map(async url => { const resp = await fetch(url); return resp.text(); }));
登录后复制
以上是Promise.all 如何简化异步 URL 获取以提高效率?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)