行数组中有超过2000个对象需要处理但得到错误最大调用堆栈超出。回调函数正在操作数据库。我试着用
的setTimeout
正在运行但执行缓慢。有没有其他方法可以解决它。
var updateRowsStatus = function (req, rows, next) {
if (rows.length == 0) {
return next();
}
var batchRows = rows.splice(0, 20);
var count = 0;
batchRows.forEach(function (row) {
// other function
updateSubEntity(req, row, 'rows', function (err, response) {
if (err)throw err;
if (++count == batchRows.length) {
updateRowsStatus(req, rows, next);
}
});
});
};
答案 0 :(得分:0)
有人发布了此解决方案但已删除。所以我再次发布他的解决方案。谢谢他。
var count = 0;
var length = rows.length;
while (rows.length > 0) {
console.log('rows -', rows.length);
var batchRows = rows.splice(0, 20);
batchRows.forEach(function (row) {
updateSubEntity(req, row, 'rows', function (err, response) {
if (err)throw err;
if (++count == length) {
return next();
}
});
});
}