在 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 对象)与异步回调之间是不是有任何关系的主要内容,如果未能解决你的问题,请参考以下文章