首页  >  文章  >  web前端  >  如何使用 Promise.all 高效地从 URL 数组中检索文本?

如何使用 Promise.all 高效地从 URL 数组中检索文本?

Susan Sarandon
Susan Sarandon原创
2024-10-27 15:10:29939浏览

How to Efficiently Retrieve Text from an Array of URLs Using Promise.all?

如何利用 Promise.all 检索 URL 数组

考虑以下场景:您有一个 URL 数组,并希望获取一个包含以下数组的对象:这些 URL 处的文件中的相应文本。 Promise.all 函数提供了一种处理此任务的便捷方法。

最初,您尝试使用 Promise.all 来检索每个 URL 的承诺。但是,随后对 results.forEach 的调用可能会导致混乱。此函数会触发每个元素的回调,从而产生一个未定义值的数组。

正确的方法是使用 Promise.all 两次。第一个实例从 URL 中获取响应,而第二个实例将响应转换为文本并返回这些文本的数组。

Promise.all(urls.map(u=>fetch(u))).then(responses =>
    Promise.all(responses.map(res => res.text()))
).then(texts => {
    …
})

或者,您可以通过直接从响应中获取文本来简化代码:

Promise.all(urls.map(url =>
    fetch(url).then(resp => resp.text())
)).then(texts => {
    …
})

使用 async/await 语法,代码变得更加简洁:

const texts = await Promise.all(urls.map(async url => {
  const resp = await fetch(url);
  return resp.text();
}));

通过使用这种方法,你可以有效地获取 URL 数组并获得一个对象相应的文本值。

以上是如何使用 Promise.all 高效地从 URL 数组中检索文本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn