Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich mit Promise.all effizient Text aus einem Array von URLs abrufen?

Wie kann ich mit Promise.all effizient Text aus einem Array von URLs abrufen?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 15:10:29939Durchsuche

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

So nutzen Sie Promise.all, um ein Array von URLs abzurufen

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!

Stellungnahme:
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