web-dev-qa-db-ja.com

複数のフェッチAPI呼び出しを行うと、すべての呼び出しが終了したかどうかを確認する方法は?

複数のURLからコンテンツを取得しています。 Fetch APIは、すべての約束を使用します。

したがって、1つのリクエストのコードは次のようになります。

fetch(url).then((response)=>response.text()).then(function(html) { //stuff });

これで、URLの配列があり、複数の呼び出しが行われ、すべての呼び出しが終了したかどうかを確認する方法がわかります。

Promise.allを使用してみましたが、表示される場合は、すべての要求に対して2つの約束があります。より良い方法はありますか、またPromise.allのサポートもそれほど良くありません。

11
Muhammad Umer

あなたがurlsという名前のURLの配列を持っていると仮定します

// separate function to make code more clear
const grabContent = url => fetch(url)
     .then(res => res.text())
     .then(html => (/* process html here */))

Promise
    .all(urls.map(grabContent))
    .then(() => console.log(`Urls ${urls} were grabbed`))
20
Yury Tarabanko