JSFiddle - React, Tailwind, and code Playground

by Artem

JavaScript

'use strict';

const getAsyncData = () => new Promise((resolve, reject) => {
	setTimeout(() => {
  	resolve({
    	data: {
      	time: new Date().toLocaleTimeString(),
      }
    })
  }, 1000);
});

function* simpleGen() {
	const ts1 = yield getAsyncData();
  const ts2 = yield getAsyncData();
  
  return [ts1, ts2];
}

const execute = gen => {
	const it = gen();
  
  let d = it.next();
 	let p = Promise.resolve();
  
	while(d.value) {
		p = p.then(v => {
    	d = it.next(v);
    });
  }
};


execute(simpleGen, (err, data) => {
	console.log(data);
});