12

I am grabbing content from multiple urls. Fetch api uses promises all over.

So my code for one requests looks like this

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

now i have array of urls and multiple calls will be made how do i know if all calls have finished.

i tried using Promise.all but if you see there are two promises for every request. Is there a better way, also Promise.all support is not that good either.

Muhammad Umer
  • 17,263
  • 19
  • 97
  • 168

1 Answers1

22

Assuming you have an array of urls named urls

// 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`))
Yury Tarabanko
  • 44,270
  • 9
  • 84
  • 98