co 里一段代码,看到时卡壳了。函数可以带参数不带无参数执行
希望有人解释下这种处理,不怎么常见。
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函数,传值作用正如你所说。