Home  >  Q&A  >  body text

node.js - 在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(),没有递归)请大家答疑解惑,不胜感激!

PHP中文网PHP中文网2647 days ago309

reply all(1)I'll reply

  • PHP中文网

    PHP中文网2017-04-17 11:47:04

    我前几天写过一篇关于koa中间件原理的文章,希望能帮到你理解一点点generator探幽(1)--koa中间件机制浅析
    (ps:koa里next的实现其实不是co,是一个叫compose的这么个函数)

    reply
    0
  • Cancelreply