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

发布于 2022-09-01 07:16:19 字数 588 浏览 12 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薄情伤 2022-09-08 07:16:19

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文