【发布时间】:2019-06-30 15:32:50
【问题描述】:
我对 Node.js 事件中 on() 和 addListener() 之间的区别有点困惑。有什么解释可以澄清这些差异吗?
【问题讨论】:
-
当它似乎与任何类型的网络毫无关系并且标签上写着“不要使用”时,为什么要标记web?
标签: javascript node.js events
我对 Node.js 事件中 on() 和 addListener() 之间的区别有点困惑。有什么解释可以澄清这些差异吗?
【问题讨论】:
标签: javascript node.js events
没有没有区别
The documentation lists .on and .addListener as an alias
我要指出的一件事是在文档中它确实声明.on 返回一个事件发射器,而addListener 没有具体说明这一点。
这只是一个疏忽,事实上,如果你输入代码很容易看到:
const EventEmitter = require("events");
const myEE = new EventEmitter();
let a = myEE.on("foo",()=>{});
let b = myEE.addListener("foo",()=>{});
console.log(a);
console.log(b);
这两个日志将打印相同的内容,您会看到类似于以下内容的内容:
EventEmitter {
domain: Domain {
domain: null,
_events: { error: [ Function: debugDomainError ] },
_eventsCunt: 1,
_maxListeners: undefined,
members: []
},
_events: { foo: [ [ Function ], [ Function ] ] },
_eventsCount: 1,
_maxListeners: undefined
}
所以不。它们之间没有区别。
【讨论】:
on 是addEventListener 的别名
https://nodejs.org/docs/latest/api/events.html#events_emitter_addlistener_eventname_listener
【讨论】:
As per documentation,它们只是别名,所以没有区别。
另见库中的how they are defined。
【讨论】: