Maison  >  Article  >  interface Web  >  Comment récupérer efficacement du texte à partir d’un tableau d’URL à l’aide de Promise.all ?

Comment récupérer efficacement du texte à partir d’un tableau d’URL à l’aide de Promise.all ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 15:10:29939parcourir

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

Comment exploiter Promise.all pour récupérer un tableau d'URL

Considérez ce scénario : vous disposez d'un tableau d'URL et souhaitez obtenir un objet avec un tableau d'URL. texte correspondant à partir des fichiers à ces URL. La fonction Promise.all fournit une approche pratique pour gérer cette tâche.

Initialement, le code que vous avez essayé utilisait Promise.all pour récupérer les promesses de chaque URL. Cependant, l'appel ultérieur à results.forEach peut prêter à confusion. Cette fonction déclenche un rappel pour chaque élément, résultant en un tableau de valeurs non définies.

L'approche correcte implique d'utiliser Promise.all deux fois. La première instance récupère les réponses des URL, tandis que la seconde convertit les réponses en texte et renvoie un tableau de ces textes.

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

Vous pouvez également simplifier le code en obtenant directement le texte de la réponse. :

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

Avec la syntaxe async/await, le code devient encore plus concis :

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

En employant cette approche, vous pouvez récupérer efficacement un tableau d'URL et obtenir un objet avec les valeurs de texte correspondantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn