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);
})();