【async】RangeError: Maximum call stack size exceeded
我在使用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){});