在 Node.js- 事件(EventEmitter 和 Listener Function 对象)与异步回调之间是不是有任何关系

Posted

技术标签:

【中文标题】在 Node.js- 事件(EventEmitter 和 Listener Function 对象)与异步回调之间是不是有任何关系【英文标题】:in Node.js- Is there any relationship between Events (EventEmitter and Listener Function objects) and the asynchronous callbacks在 Node.js- 事件(EventEmitter 和 Listener Function 对象)与异步回调之间是否有任何关系 【发布时间】:2017-09-07 16:37:09 【问题描述】:

我正在探索 Node.js。我了解 Node.js 核心 API 是围绕惯用的异步事件驱动架构构建的 现在,我猜这意味着每次调用异步函数时,它都会在某个单独的异步队列中注册这个函数,该队列在后台由 Libuv 的单独线程处理。并且在主程序线程中继续执行到下一行。现在,当该 asyc 函数完成执行时,它会“发出”一些事件还是只是将回调注册到事件队列中,最终将被事件循环拾取?基本上,我对理解通用“事件”和异步回调(如果它们也被称为某些事件)的概念有多么不同感到有些困惑。

【问题讨论】:

【参考方案1】:

据我所知,它与 addListener 没有什么不同。这里有一些关于该事件的文档:http://nodejs.org/docs/latest/api/events.html#emitter.on on 和 addListener 都记录在同一标题下。它们具有相同的效果;

server.on('connection', function(stream) 
    console.log('someone connected!');
);

server.addListener('connection', function(stream) 
    console.log('someone connected!');
);

并且.on() 与EventEmitter 对象中的.addListener() 完全相同。

这里直接来自 EventEmitter 源代码:https://github.com/nodejs/node-v0.x-archive/blob/master/lib/events.js#L188

EventEmitter.prototype.on = EventEmitter.prototype.addListener;

【讨论】:

这似乎不是 OP 在他们的问题中提出的问题。您在这里提到的内容不久前在 What is the difference between addListener(event, listener) and on(event, listener) method in node.js? 中进行了介绍,但我认为这不是这里的 OP 所要求的。 好答案 Tyagi 。谢谢

以上是关于在 Node.js- 事件(EventEmitter 和 Listener Function 对象)与异步回调之间是不是有任何关系的主要内容,如果未能解决你的问题,请参考以下文章

每日灵魂一问nodejs-eventEmitte是啥?手动实现

为啥 Node.js 不连续监听事件?

Node.js:查找附近的事件 [重复]

对 Node.js 事件驱动模型的深入理解

Node.js 事件循环

Node.js 事件循环