Nodejs RangeError超出最大调用堆栈

时间:2015-04-21 08:08:22

标签: javascript node.js

行数组中有超过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);

            }
        });
    });
};

1 个答案:

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

            });
        });
    }