在node中封装next的原理如何理解?

function co(GenFunc) {
return function(cb) {
var gen = GenFunc()
next()
function next() {
if (gen.next) {
var ret = gen.next()
if (ret.done) { // 如果结束就执行cb
cb && cb()
} else { // 继续next
ret.value(next)
}
}
}
}
}
初学koa,tj大神的co库核心代码如上,我很难理解ret.value(next) 它只是把next函数体传给了ret对象的value属性,怎么就可以再次执行next()呢(我的理解是整个函数只执行了一次gen.next(),没有递归)请大家答疑解惑,不胜感激!

阅读 3.7k
1 个回答
推荐问题
宣传栏