handling async op waterfall model

by amrendra kumar

JavaScript

function run(item) {
	console.log('requesting for item: ', item);

	return new Promise((resolve) => {
		const random =	Math.floor(Math.random()*10)+1;
		setTimeout(() => {
  		let returnData = `item: ${item} & randomDelay: ${random}`;
      resolve(returnData);
  	}, 	random*1000);
  });
}

const array = [1,2,3,4,5];
const unresolvedPromise = [];

array.map(item => {
	//making parallel req, and pushing unresolved promise into array
	unresolvedPromise.push(run(item));
});







// handling data in series
(async function () { 
	let returnData = await unresolvedPromise[0];
  console.log(returnData);
  returnData = await unresolvedPromise[1];
  console.log(returnData);
  returnData = await unresolvedPromise[2];
  console.log(returnData);
  returnData = await unresolvedPromise[3];
  console.log(returnData);
  returnData = await unresolvedPromise[4];
  console.log(returnData);
})();