[英]Nodejs fork callback executed repeated times
我正在研究 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
您每次都在創建一個新的偵聽器,這就是回調被調用 n+1 次的原因。
嘗試使用.once()
而不是.on()
由於大多數在 Node.js 中使用事件的庫都繼承自EventEmitter ,因此您將在該頁面上找到相關文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.