戳了一段代码测试 yield 的写循环的问题 - CNode技术社区

戳了一段代码测试 yield 的写循环的问题
发布于 10 年前 作者 dphdjy 5478 次浏览 最后一次编辑是 9 年前 来自 问答
var co = require('co');
co(function*() {
 this.i = 0;
 yield loop1();
})
function* loop1() {
 console.log("loop:"+this.i);
 this.i++;
 yield loop2();
}
function* loop2() {
 console.log("loop:"+this.i);
 this.i++;
 yield loop1();
}

然而这段代码的循环次数永远只有

loop:0
loop:1
loop:2
loop:3
loop:4
loop:5
loop:6
loop:7
loop:8
loop:9
...
loop:3581
loop:3582
loop:3583
loop:3584
loop:3585
loop:3586
loop:3587

难道代码有问题还是本身就是这样的限制那么限制来源是co模块迭代next还是什么...以3587和yield为关键词并未找到相关问题

5 回复

这个和co没关系吧 应该是无法gc了吧 内存泄漏

@zhangking520 木有报错〜内存泄露会蹦出错误〜〜

栈溢出了,递归层数太多了。

co catch 一下 的确是 RangeError: Maximum call stack size exceeded

@zhangking520 好吧〜大概直接跳过错误捕获停止进程了〜

回到顶部

AltStyle によって変換されたページ (->オリジナル) /