例如
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
)触发。
编辑:
修改代码以使用多个函数/监听器。
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);
}
}
}
最佳答案
嗯,从更广泛的 Angular 来看,它确实是一个对象(EvenEmitter 类),它公开了一组方法来将监听器函数注册到事件,并删除这些监听器函数,以及其他各种会改变其内部封闭事件对象的函数。
此外,所有触发事件的核心模块都继承自 EventEmitter 类,从而获得对中央事件对象的访问权限。 因此,是的,它确实将函数映射到对象。
关于javascript - EventEmitter 是否只是将函数映射到对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449589/