Maison > interface Web > js tutoriel > Comment récupérer efficacement des données à partir de plusieurs URL avec Promise.all ?

Comment récupérer efficacement des données à partir de plusieurs URL avec Promise.all ?

Patricia Arquette
Libérer: 2024-10-29 05:24:02
original
241 Les gens l'ont consulté

How to Efficiently Fetch Data from Multiple URLs with Promise.all?

Conquérir plusieurs récupérations d'URL avec Promise.all

Dans le domaine de la programmation asynchrone, Promises offre un mécanisme puissant pour gérer des tâches asynchrones telles que la récupération données provenant de plusieurs URL. Comme vous l'avez constaté, essayer d'adapter ce cas d'utilisation au paradigme Promise.all peut être une pierre d'achoppement.

Disséquons votre tentative de solution :

var promises = urls.map(url => fetch(url));
var texts = [];
Promise.all(promises)
  .then(results => {
     results.forEach(result => result.text()).then(t => texts.push(t))
  })
Copier après la connexion

Cette méthode souffre d'un défaut crucial : forEach ne renvoie ni un tableau ni une promesse, vous laissant dans une promesse vide sans aucun moyen d'accéder aux textes récupérés.

Pour remédier à cela, Promise.all doit être employé deux fois, une fois pour récupérer le URL et une fois pour extraire le texte des réponses :

Promise.all(urls.map(u=>fetch(u))).then(responses =>
    Promise.all(responses.map(res => res.text()))
).then(texts => {
    …
})
Copier après la connexion

Vous pouvez également rationaliser le processus en combinant la récupération et la récupération de texte en une seule étape :

Promise.all(urls.map(url =>
    fetch(url).then(resp => resp.text())
)).then(texts => {
    …
})
Copier après la connexion

Pour plus solution concise, profitez de la puissance de async/await :

const texts = await Promise.all(urls.map(async url => {
  const resp = await fetch(url);
  return resp.text();
}));
Copier après la connexion

Ces approches vous offrent la possibilité de gérer efficacement plusieurs récupérations d'URL, vous permettant de créer l'objet souhaité contenant les textes extraits.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal