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'];
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))); });
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 => { … });
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(); }));
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!