EventEmitter 是否只是将函数映射到一个对象中?
Does EventEmitter simply map functions in an object?
例如
var event = {
message: function(message){console.log(message);}
}
//polling here
{
if(response.type == "message")
{
event[response.type](response.message);
}
}
应该与
类似
events.on("message", function(message){console.log(message);});
//polling here
{
events.emit(response.type, response.message);
}
如果不是,除了像.once
这样的辅助功能外,它与EventEmitter有什么不同?
我出于不同的原因同时使用两者。 EventEmitter 用于事件驱动函数,而 event
对象用于保持一组有组织的函数以从单个上下文 (event
) 触发。
编辑:
修改代码以处理多个 functions/listeners。
var event = {
message: []
}
event.message.push(function(message){console.log(message)});
//polling here
{
if(response.type == "message")
{
for(var func in event[response.type])
{
event[response.type][func](response.message);
}
}
}
好吧,从更广泛的角度来看,它确实是一个对象(EvenEmitter class),它公开了一组方法来向事件注册侦听器函数,并删除这些侦听器函数,以及其他各种变异的函数它是内部关闭的事件对象。
除此之外,所有触发事件的核心模块都继承自 EventEmitter class,从而获得对中央事件对象的访问权限。
因此,是的,它确实将函数映射到一个对象。
例如
var event = {
message: function(message){console.log(message);}
}
//polling here
{
if(response.type == "message")
{
event[response.type](response.message);
}
}
应该与
类似events.on("message", function(message){console.log(message);});
//polling here
{
events.emit(response.type, response.message);
}
如果不是,除了像.once
这样的辅助功能外,它与EventEmitter有什么不同?
我出于不同的原因同时使用两者。 EventEmitter 用于事件驱动函数,而 event
对象用于保持一组有组织的函数以从单个上下文 (event
) 触发。
编辑:
修改代码以处理多个 functions/listeners。
var event = {
message: []
}
event.message.push(function(message){console.log(message)});
//polling here
{
if(response.type == "message")
{
for(var func in event[response.type])
{
event[response.type][func](response.message);
}
}
}
好吧,从更广泛的角度来看,它确实是一个对象(EvenEmitter class),它公开了一组方法来向事件注册侦听器函数,并删除这些侦听器函数,以及其他各种变异的函数它是内部关闭的事件对象。
除此之外,所有触发事件的核心模块都继承自 EventEmitter class,从而获得对中央事件对象的访问权限。 因此,是的,它确实将函数映射到一个对象。