我正在研究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
答案 0 :(得分:0)
您每次都在创建一个新的侦听器,这就是回调被称为n + 1次的原因。
尝试使用.once()
代替.on()
由于大多数使用Node.js中事件的库都继承自EventEmitter,因此您可以在该页面上找到相关文档。