簡體   English   中英

Nodejs fork 回調多次執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM