戳了一段代码测试 yield 的写循环的问题
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 好吧~大概直接跳过错误捕获停止进程了~