循环10k数组表示错误超出最大调用堆栈大小

时间:2014-04-01 18:07:11

标签: javascript node.js asynchronous

我试图处理一个包含10k项目的数组,以便在每一行上设置一个新属性。

 _async.mapLimit(collection, 100, function (row, cb){
      row.type = "model";
      cb(null, row);
 }, function (err, collection){
      if(err) throw(err);
      console.log(collection);
 });

然后我收到此错误:

RangeError: Maximum call stack size exceeded
这是什么?我尝试使用async eachSeries,但同样的情况发生了。

1 个答案:

答案 0 :(得分:7)

async库期望您在回调中执行异步操作,以便在等待异步操作完成时让堆栈展开。

如果您只对每个元素执行同步处理,只需使用for循环:

for (var i=0; i<collection.length; ++i) {
    collection[i].type = 'model';
}