co 里一段代码,看到时卡壳了。函数可以带参数不带无参数执行
发布于 8 年前 作者 zysam 3881 次浏览 来自 问答

希望有人解释下这种处理,不怎么常见。

    onFulfilled();

    /**
     * @param {Mixed} res
     * @return {Promise}
     * @api private
     */

    function onFulfilled(res) {
      var ret;
      try {
        ret = gen.next(res);
      } catch (e) {
        return reject(e);
      }
      next(ret);
    }
	

还有一个简单的自动执行promise的功能写法:

	function run(gen){
	  var g = gen();
	
	  function next(data){
		var result = g.next(data);
		if (result.done) return result.value;
		result.value.then(function(data){
		  next(data);
		});
	  }
	
	  next();
	}

	run(gen);
2 回复

其实可以理解成都是带参数执行的,只是第一次作为入口函数执行时,参数传的是undefined。这个参数的作用是被用来当做上一次yield时的返回值,所以第一次调用时就是undefined咯。

@DavidCai1993 多谢提醒,看了 generator next函数,传值作用正如你所说。

回到顶部