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