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