generator实现伪同步

 1 var getFun=function(value){
 2     return function(callback){
 3     setTimeout(function(){
 4         callback(value);
 5     },1000);
 6  };
 7 }
 8 
 9 ;+function(gen){
10 var next=gen();
11 function nextyield(result){
12     var item=next.next(result),value;
13     if(item.done) return;
14     value=item.value;
15     //console.log(typeof value);
16     if(typeof value=="function"){ 
17       value(nextyield); 
18       return;
19     }
20     nextyield(value);
21 }
22 nextyield();
23 
24 }(function *(){
25 
26     var a=yield getFun(10);
27     console.log(a);
28     var b=yield 3;
29     var c=yield 2;
30     var d=yield getFun(15)
31     console.log(d);
32     console.log(a+b+c+d);
33 })

 

posted @ 2017-05-29 01:24  godghdai  阅读(238)  评论(0编辑  收藏  举报