Heim > Web-Frontend > js-Tutorial > Wie kann ich „Promise.all' verwenden, um Daten aus einem Array von URLs abzurufen und ein entsprechendes Array mit Textinhalten zu erstellen?

Wie kann ich „Promise.all' verwenden, um Daten aus einem Array von URLs abzurufen und ein entsprechendes Array mit Textinhalten zu erstellen?

Mary-Kate Olsen
Freigeben: 2024-10-29 02:38:02
Original
350 Leute haben es durchsucht

How can I use `Promise.all` to retrieve data from an array of URLs and create a corresponding array of text content?

Verwendung von Promise.all zum Abrufen eines Arrays von URLs

Das Abrufen von Daten aus mehreren Quellen kann eine häufige Aufgabe bei der Bearbeitung von Webanfragen sein. Promise.all ist ein nützliches Tool in JavaScript, das die gleichzeitige Ausführung mehrerer asynchroner Vorgänge und die Kombination ihrer Ergebnisse in einem einzigen Promise ermöglicht.

Das Problem:
Stellen Sie sich vor, Sie haben eine Array von URLs und zielen darauf ab, ein Objekt zu erstellen, das die Struktur des URL-Arrays widerspiegelt, jedoch den Inhalt der Textdatei jeder URL enthält.

var urls = ['1.txt', '2.txt', '3.txt']; // These files contain "one", "two", "three" respectively.
var result = ['one', 'two', 'three']; 
Nach dem Login kopieren

Ansatz mit Promise.all:
Wenn Sie zunächst versuchen, dieses Problem mit Promise.all zu lösen, können Schwierigkeiten auftreten. Sehen wir uns einen fehlerhaften Ansatz an:

var promises = urls.map(url => fetch(url));
var texts = [];
Promise.all(promises).then(results => {
  results.forEach(result => result.text().then(t => texts.push(t)));
});
Nach dem Login kopieren

Hier wird Promise.all auf ein Array von Promises angewendet, die Abrufanforderungen darstellen. Dieser Ansatz erzeugt jedoch nicht wie beabsichtigt das gewünschte Array von ['eins', 'zwei', 'drei']. Um dies zu beheben, ziehen Sie diese verfeinerten Lösungen in Betracht:

Promise.all(urls.map(u => fetch(u))).then(responses =>
  Promise.all(responses.map(res => res.text()))
).then(texts => {
  …
});
Nach dem Login kopieren

Dieser Code initiiert Abrufanfragen für alle URLs und verarbeitet anschließend die Antworten, um den Textinhalt jeder URL abzurufen. Das Ergebnis ist ein Array von Textwerten, die weiterverarbeitet werden können. Alternativ kann der Code mithilfe moderner JavaScript-Funktionen vereinfacht werden:

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

Hier wird die Async/Await-Syntax verwendet, um asynchrone Vorgänge prägnanter zu handhaben.

Umsichtiger Einsatz von Promise.all in Verbindung mit Mit diesen Techniken können Sie Daten effektiv aus einer Reihe von URLs abrufen und verarbeiten und so den Weg für nachfolgende Datenmanipulationsaufgaben ebnen.

Das obige ist der detaillierte Inhalt vonWie kann ich „Promise.all' verwenden, um Daten aus einem Array von URLs abzurufen und ein entsprechendes Array mit Textinhalten zu erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage