跳到主要内容
CNode

【async】RangeError: Maximum call stack size exceeded

问答
Yyouthfighter发布于 10 年前最后回复 10 年前
260880

我在使用async.eachLimit方法时发现如果数组过大时,会报RangeError: Maximum call stack size exceeded错误,我在网上查了一下,没有找到合适的解决方法。请各位大神指教,万分感谢!! 以下为我的测试代码

var async = require("async");
var arr = [];
for(var i=0;i<3000;i++){
    arr.push(i);
}
async.eachLimit(arr,10,function(item,cb){
    cb();
},function(err){});
查看回复

回复 (2)

Y
youthfighter#210 年前

我查看了一些资料得到如下的结果,与大家分享。 1.问题原因:导致这个问题是因为iterator是同步方法,请参考:http://blog.csdn.net/wmzy1067111110/article/details/44811747 2.解决方法:使用setImmediate(cb);请参考:https://github.com/caolan/async/issues/700 代码改为:

var async = require("async");
var arr = [];
for(var i=0;i<3000;i++){
    arr.push(i);
}
async.eachLimit(arr,10,function(item,cb){
   setImmediate(cb);
},function(err){});
D
dbit-xia#110 年前

Thenjs貌似没有这个限制

来自酷炫的 CNodeMD

参与回复

登录后即可参与回复。登录