节点 - 回调停止使用大型数组

时间:2015-01-26 11:46:23

标签: arrays node.js

我正在使用node.js应用程序中大约28,000个相当大的对象的数组。出于某种原因,当我在数组中大约10,000个项目之上时,从不调用此数据处理任务的最终模块 - 它只是在最后挂起。如果我将数组拼接到大约1或2千个对象,它就可以完美地运行。

我很失落。我已经盯着这个虫子一段时间了。我最初认为它是a bug with q但是在尝试了q的建议解决方案,并用异步代替q后,执行仍然停止。

代码基本上如下所示:

main.js

var task1 = require('task1');
var buggyTask = require('task2');
var notCalledTask = require('task3');

return task1().then(buggyTask).then(notCalledTask);

buggyTask.js

module.exports = function(items) {
    var updateOrInsertData = function(item) {
        return Q(Item.create(item));
    };
    return Q.all(items.map(updateOrInsertData));
};

我应该补充一点,该程序绝对不会耗尽内存。我用--max-old-space-size=4096

运行它

0 个答案:

没有答案