首頁  >  文章  >  web前端  >  如何使用 Promise.all 有效率地從 URL 陣列中檢索文字?

如何使用 Promise.all 有效率地從 URL 陣列中檢索文字?

Susan Sarandon
Susan Sarandon原創
2024-10-27 15:10:29939瀏覽

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

如何利用Promise.all 檢索URL 數組

考慮以下場景:您有一個URL 數組,並希望獲取一個包含以下數組的對象:這些URL 處的文件中的相應文字。 Promise.all 函數提供了一種處理此任務的便捷方法。

最初,您嘗試使用 Promise.all 來檢索每個 URL 的承諾。但是,隨後對 results.forEach 的呼叫可能會導致混亂。此函數會觸發每個元素的回調,從而產生一個未定義值的陣列。

正確的方法是使用 Promise.all 兩次。第一個實例從 URL 中取得回應,而第二個實例將回應轉換為文字並傳回這些文字的陣列。

Promise.all(urls.map(u=>fetch(u))).then(responses =>
    Promise.all(responses.map(res => res.text()))
).then(texts => {
    …
})

或者,您可以透過直接從回應中取得文字來簡化程式碼:

Promise.all(urls.map(url =>
    fetch(url).then(resp => resp.text())
)).then(texts => {
    …
})

使用async/await 語法,程式碼變得更加簡潔:

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

透過使用這種方法,你可以有效地取得URL 陣列並獲得一個物件對應的文字值。

以上是如何使用 Promise.all 有效率地從 URL 陣列中檢索文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn