【发布时间】:2014-12-05 15:42:54
【问题描述】:
我需要使用async.each或async.eachSeries或async.whilst等函数处理大量条目(数万个)。
说我必须使用async 几乎是多余的,因为我将为每个条目调用一些查询,从而使代码异步。
不幸的是,使用async 的函数,调用堆栈被消耗得非常快,导致RangeError: Maximum call stack size exceeded。
有没有办法调整async 来防止这个问题?迭代实现将解决该问题。有没有考虑到这个问题的替代库?
这是一个显示问题的示例代码 sn-p:
async = require('async');
a = []
for(i = 0; i < 10000000; i++) {
a[i] = i;
}
async.eachSeries(a,function(element,callback) {
console.log(element);
callback();
},function(err){
if(err){
console.log("error:",err);
}
console.log("finished.");
});
【问题讨论】:
-
不,但是通过使用您自己的堆栈,您通常可以在没有递归的情况下重述递归方法。提供更多代码,我会提供答案...
-
这是脚本的代码,如果有点乱,请见谅,正在重构:nopaste.info/ca0c118591.html
标签: javascript node.js asynchronous stack