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

Javascript 循环10k数组表示错误超出了最大调用堆栈大小,javascript,node.js,asynchronous,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:

我试图处理一个包含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,但同样的情况也发生了。

async库希望您在回调中执行异步操作,以便在等待异步操作完成时释放堆栈

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

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

用于(var i=0;i可能是
cb
函数再次调用循环,以便递归调用它?根据async文档,迭代器方法具有回调函数:您在回调中没有执行任何异步操作,所以您不能用迭代数组的
for
循环替换它吗?如果您有async操作,则每次达到限制时堆栈都可以展开,并且不会出现堆栈溢出。不要将同步功能与异步模块一起使用。