5
В массиве строк есть более 2000 объектов, которые необходимо обработать, но получить ошибку. Максимальный уровень стека вызовов. Функция обратного вызова управляет базой данных. Я пытался использоватьNodejs RangeError Максимальный стек вызовов превышен
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);
}
});
});
};
Вы используете рекурсивную функцию (вызывающую себя). Можете ли вы придумать способ сделать такую же обработку без этого шаблона? – joews
Рекурсия или цикл для обработки операций с db - это всегда плохая идея. – Lewis
Пожалуйста, предложите лучшее решение. – Rohit