EventEmmitter:从回调中访问事件

时间:2013-12-01 14:44:54

标签: node.js eventemitter

我是否可以在触发事件时执行的回调中访问事件的名称?

考虑以下示例,其中我对两个不同的事件具有相同的回调(handleEvent)。现在我想基于触发其执行的事件在回调中添加条件语句。这可能吗?

obj.on('start', handleEvent);
obj.on('stop', handleEvent);

function handleEvent() {
       // how can I check here if the event that triggers the execution of handleEvent is 'start' or 'stop'

}

我现在所做的是用'emit'将事件传递两次 - 这似乎工作正常,但我不喜欢写两次:

obj.emit('start', 'start', handleEvent);

2 个答案:

答案 0 :(得分:0)

尝试EventEmitter2

var EventEmitter = require('eventemitter2').EventEmitter2
var emitter = new EventEmitter

emitter.on('test', onEvent)
emitter.emit('test')

function onEvent() {
  console.log(this.event)
}

答案 1 :(得分:0)

你可以这样做:

obj.on('start', handleEvent.bind({ event: 'start' }));
obj.on('stop', handleEvent.bind({ event: 'stop' }));

function handleEvent() {
    if(this.event == 'start') { ///
}