gen+promises

by evgkch

Babel + JSX

const get = (x)=>new Promise(resolve=>
	setTimeout(()=>{
  	resolve(x * 2);
  },250)
);

function runner(genFn){
	const itr = genFn();
  function run(arg){
  	const result = itr.next(arg);
    if (result.done)
    	return result.value;
    else
    	return Promise.resolve(result.value).then(run);
  }
  return run();
}

runner(function* (){
	const res1 = yield get(1);
  let i = 0;
  let res2;
  while(i < 10){
  	if (!res2)
    	res2 = yield get(res1);
    else
    	res2 += yield get(res2);
    i++;
  }
  const res3 = yield get(res2);
  return res3;
}).then(res=>console.log(res))