【async】RangeError: Maximum call stack size exceeded
发布于 8 年前 作者 youthfighter 5301 次浏览 来自 问答

我在使用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 回复

Thenjs貌似没有这个限制

来自酷炫的 CNodeMD

我查看了一些资料得到如下的结果,与大家分享。 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){});
回到顶部