JSFiddle - React, Tailwind, and code Playground

JavaScript

var myurls = ["url1", "url2", "url3"];

//dummy http.get
function HttpGet(url) {
	return new Promise((resolve, reject) => {
  	console.log(`fetching ${url}`);
  	setTimeout(function(){
    	resolve(`done: ${url}`);
    }, Math.floor(Math.random()*500));
  });
}

function buildPromiseChain(items, func) {
	var promise = new Promise((resolve, reject) => {
  	resolve([]);
  });
  items.forEach((item) => {
  	promise = promise.then((result) => {
    	return func(item).then((itemResult) => {
      	result.push(itemResult);
        return result;
      });
    });
  });
  return promise;
}

buildPromiseChain(myurls, HttpGet).then((results) => console.log('done', results));