gpt4 book ai didi

javascript - Node.js 事件监听器被阻止?

转载 作者:行者123 更新时间:2023-11-30 10:04:53 25 4
gpt4 key购买 nike

使用以下代码,我注册了一个 node.js 事件监听器,等待来自通过名为 zmqevent 的全局 nodejs EventEmitter 转发的 zeromq 连接的响应。

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 秒,如果没有响应到达,则触发和替代“离线”结果。但即使是这个简单的示例也无法正常工作,并且事件仅在我的脚本的最后触发。你有好主意吗?显然一定有一个愚蠢的错误......

最佳答案

你不能。

NodeJS(和 io.js)中的 JavaScript 并发模型是所有同步代码在排空微/宏任务队列上的任何事件处理程序之前运行。

这正是并发模型的工作方式,它实际上非常有用,因为永远不会出现使您的代码处于不一致状态的中断。

关于javascript - Node.js 事件监听器被阻止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29693789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com