Generator流程控制实例

流程控制

function prepare(sucess){
        setTimeout(function(){
             console.log("prepare chicken");
             sucess();
         },500)
   }
 
   //炒鸡
   function fired(sucess){
        setTimeout(function(){
             console.log("fired chicken");
             sucess();
         },500)
   }
   //炖鸡
   function stewed(sucess){
        setTimeout(function(){
             console.log("stewed chicken");
             sucess();
         },500)
   }
   //上料
   function sdd(sucess){
        setTimeout(function(){
             console.log("sdd chicken");
             sucess();
         },500)
   }
   //上菜
   function serve(sucess){
        setTimeout(function(){
             console.log("serve chicken");
             sucess();
         },500)
   }
 
  //流程控制
  function run(fn){
    const gen = fn();
    function next() {
        const result = gen.next();
        console.log(result);
        if (result.done) return;//结束
        // result.value就是yield返回的值,是各个工序的函数
        result.value(next);//next做为入参,即本工序成功后,执行下一工序
    }
    next();
  };
  //工序
  function* task(){
     yield prepare;
     yield fired;
     yield stewed;
     yield sdd;
     yield serve;
  }
  run(task);

这个博客写的不错,结合阮一峰大佬的入门教程比较好理解函数

相关文章
相关标签/搜索