2017-04-17 55 views
1

例如EventEmitter是否简单地映射对象中的函数?

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); 
     } 

    } 
} 

回答

0

那么,在更广泛的角度来说,这的确是一个对象(EvenEmitter类),其公开的方法来注册监听器功能,以一个事件集和也以消除那些听者功能,加上其它各种功能,其变异它的内关闭事件对象。

此外,所有触发事件的核心模块都从EventEmitter类继承,从而获得对中心事件对象的访问权限。 因此,它确实将功能映射到对象。

+0

嗨,检查我的编辑。 – Vic

+0

我已经更新了答案,但从我的角度来看,确实如此。 – Nivesh