在`async`中实现了非递归功能吗?

时间:2014-12-05 15:42:54

标签: javascript node.js asynchronous stack

我需要使用async.eachasync.eachSeriesasync.whilst等功能处理大量条目(数万条)。

几乎可以说我使用async,因为我打算为每个条目调用一些查询,使代码异步。

不幸的是,使用async的函数,调用堆栈消耗得非常快,导致RangeError: Maximum call stack size exceeded

有没有办法调整async以防止出现此问题?迭代实现可以解决问题。是否考虑过这个问题的替代库?

这是一个显示问题的示例代码段:

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.");
});

1 个答案:

答案 0 :(得分:0)

您要找的是tail recursion。请检查此问题:What is tail recursion?