美文网首页
2019-08-15 手写generator函数运行容器(bl

2019-08-15 手写generator函数运行容器(bl

作者: DreamNeverDie | 来源:发表于2019-08-15 16:09 被阅读0次
    function runner(_gen){
      return new Promise((resolve, reject)=>{
        var gen=_gen();
    
        _next();
        function _next(_last_res){
          var res=gen.next(_last_res);
    
          if(!res.done){
            var obj=res.value;
    
            if(obj.then){
              obj.then((res)=>{
                _next(res);
              }, (err)=>{
                reject(err);
              });
            }else if(typeof obj=='function'){
              if(obj.constructor.toString().startsWith('function GeneratorFunction()')){
                runner(obj).then(res=>_next(res), reject);
              }else{
                _next(obj());
              }
            }else{
              _next(obj);
            }
          }else{
            resolve(res.value);
          }
        }
      });
    };
    
    

    相关文章

      网友评论

          本文标题:2019-08-15 手写generator函数运行容器(bl

          本文链接:https://www.haomeiwen.com/subject/ljwzjctx.html