Nodejs RangeError超出最大调用堆栈

行数组中有超过2000个对象需要处理,但出现错误。最大调用堆栈超出。callback函数正在操作数据库。 我试图使用

的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); } }); }); }; 

有人发布了这个解决scheme,但删除。 所以我张贴他的解决scheme。 感谢他。

  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(); } }); }); }