【发布时间】:2015-04-17 08:13:22
【问题描述】:
使用以下代码,我注册了一个 node.js 事件侦听器,等待来自 zeromq 连接的响应,该连接通过名为 zmqevent 的全局 nodejs EventEmitter 转发。
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
基本上,我想等待来自我的 zeromq 连接的响应 2 秒,如果没有响应到达,则触发和替代“离线”结果。 但即使是这个简单的示例也不起作用,并且仅在脚本的最后触发事件。 你有想法吗?显然肯定是犯了一个愚蠢的错误……
【问题讨论】:
-
如果要等待 2 秒,请使用
setTimeout(..., 2000)。当响应在该时间段内到达时,使用clearTimeout()再次取消它。 -
我不确定你的意思?你能提供一个例子吗?似乎不可能用事件中断 setTimeout()。
标签: javascript node.js events listener blocked