1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| function tic(timer,callback){ return new Promise(function(resolve,reject){ setTimeout(function(){ callback(); resolve(); },timer); }); } function * show(){ yield tic(3000,red); yield tic(2000,green); yield tic(1000,yellow); } function loop(iterator,generator){ let result = iterator.next(); console.log(result) if(result.done){ loop(generator(),generator); }else{ result.value.then(function(){ loop(iterator,generator); }); } } loop(show(),show);
|