使用 async.queue 超出最大调用堆栈大小

Maximum call stack size exceeded using async.queue

本文关键字:调用 堆栈 async queue 使用      更新时间:2023-09-26

我正在运行下面的代码,但我超出了堆栈大小,我不知道为什么。该代码适用于较少的项目(测试最多 1000 个)。当我尝试使用大量项目时,我总是收到此错误。顺便说一句,我正在使用解析sdk。

d:'GitHub'ExampleProj'node_modules'parse'build'parse-latest.js:785
    each(slice.call(arguments, 1), function(source) {
               ^
RangeError: Maximum call stack size exceeded

有什么想法吗?这是代码的干净版本

var q = async.queue(function (user, callback) {
    user.signUp(null, {
        success: function(user) {
            callback();
        },
        error: function(user, error) {
            callback();
        }
    });
}, 100);
q.drain = function() {
    console.log('All items have been processed');
};
// ~17000 items
for(var i=0; i < sqlFiles.length; i++) {
    var user = {
        ...
    };
    q.push(user);
}

节点堆栈大小类似于使用 v8 引擎的浏览器中的堆栈大小,大约为 25 000。但是您可以使用控制台参数来增加它:

node --stack-size=1000000000 file.js