Async generator
by amrendra kumar
JavaScript
// third party api
function run(item) {
console.log('requesting for item: ', item);
return new Promise((resolve) => {
const random = Math.floor(Math.random()*5) + 1;
setTimeout(() => {
let returnData = `item: ${item} & randomDelay: ${random}`;
resolve(returnData);
}, random*1000);
});
}
async function ajax(item) {
const returnData = await run(item)
it.next(returnData);
}
const array = [1,2,3,4,5];
// Generator
function* gen() {
// consuming using for of loop
for( const item of array) {
const returnData = yield ajax(item)
console.log(returnData)
}
}
const it = gen();
// start the gen
it.next();