Nodejs fork回调重复执行

时间:2015-12-26 21:47:30

标签: node.js express child-process

我正在研究Express 4,我已经将一项繁重的任务转移到了一个子进程。一切都工作正常,除了父进程中的回调以某种方式执行多次。那,导致错误“无法在发送后设置标题”为什么第一件事情发生了? 家长流程:

var cp = require('child_process').fork('./child.js');
cp.send(data);
cp.on('message', function(data){
    console.log('status: '+data.status);
    return res.status(200).json(data);
});

分叉过程:

process.on('message', function(data){
    /*process the data*/
    process.send({status: 200});
});

结果:

/*first time*/
status: 200
/*second time*/
status: 200
status: 200
/*third time*/
status: 200
status: 200
status: 200
/*random time*/
status: 200
status: 200
status: 200
status: 200

1 个答案:

答案 0 :(得分:0)

您每次都在创建一个新的侦听器,这就是回调被称为n + 1次的原因。

尝试使用.once()代替.on()

由于大多数使用Node.js中事件的库都继承自EventEmitter,因此您可以在该页面上找到相关文档。