Heim >Web-Frontend >js-Tutorial >Wie kann ich mit Promise.all effizient Text aus einem Array von URLs abrufen?
Stellen Sie sich dieses Szenario vor: Sie haben ein Array von URLs und möchten ein Objekt mit einem Array von erhalten entsprechenden Text aus den Dateien unter diesen URLs. Die Promise.all-Funktion bietet einen praktischen Ansatz zur Bewältigung dieser Aufgabe.
Anfangs verwendete der Code, den Sie versucht haben, Promise.all, um die Versprechen für jede URL abzurufen. Der anschließende Aufruf von results.forEach kann jedoch zu Verwirrung führen. Diese Funktion löst einen Rückruf für jedes Element aus, was zu einem Array undefinierter Werte führt.
Der richtige Ansatz besteht darin, Promise.all zweimal zu verwenden. Die erste Instanz ruft die Antworten von den URLs ab, während die zweite die Antworten in Text umwandelt und ein Array dieser Texte zurückgibt.
Promise.all(urls.map(u=>fetch(u))).then(responses => Promise.all(responses.map(res => res.text())) ).then(texts => { … })
Alternativ können Sie den Code vereinfachen, indem Sie den Text direkt aus der Antwort abrufen :
Promise.all(urls.map(url => fetch(url).then(resp => resp.text()) )).then(texts => { … })
Mit der Async/Await-Syntax wird der Code noch prägnanter:
const texts = await Promise.all(urls.map(async url => { const resp = await fetch(url); return resp.text(); }));
Mit diesem Ansatz können Sie effektiv ein Array von URLs abrufen und ein Objekt mit erhalten die entsprechenden Textwerte.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Promise.all effizient Text aus einem Array von URLs abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!