使用以下代碼我註冊了一個node.js事件偵聽器,該偵聽器正在等待來自通過名爲zmqevent的全局nodejs EventEmitter轉發的zeromq連接的響應。Node.js事件監聽器被阻止?
global.zmqevent.removeAllListeners(req.user._id)
global.zmqevent.on(req.user._id, function (msg, status) {
console.log('event triggered');
});
global.zmq_controller_pub.send(recipient + " " + String(req.user._id) + " " + "getReportSingle");
console.log("1");
console.log("1");
console.log("1");
console.log("1");
console.log("1");
console.log("1");
console.log("1");
console.log("1");
基本上事件隊列起作用。 zmq_controller_pub.send將請求發送到我的外部腳本,並且響應到達node.js發出一個node.js事件,該事件觸發上面定義的事件偵聽器。
我怎樣才能讓事件監聽器在我的腳本結尾處中斷console.log()鏈? 電流輸出是這樣的:
1
1
1
1
1
1
1
1
event triggered
基本上,我想等我從2秒和消防另類「離線」 zeromq連接的響應的結果,如果沒有應答。 但即使這個簡單的例子還沒有工作,事件只在我的腳本的最後被觸發。 你有想法嗎?顯然必須有一個愚蠢的錯誤...
如果要等待2秒,使用'的setTimeout(...,2000)'。當響應在這段時間內到達時,使用'clearTimeout()'來再次取消它。 – robertklep
我不確定你的意思?你能舉一個例子嗎? 看來不可能用事件中斷setTimeout()。 – Whezz