0

我可以从触发事件时执行的回调中访问事件的名称吗?

考虑以下示例,其中我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);
4

2 回答 2

0

你可以做:

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

function handleEvent() {
    if(this.event == 'start') { ///
}
于 2013-12-01T15:47:05.747 回答
0

尝试EventEmitter2

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

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

function onEvent() {
  console.log(this.event)
}
于 2013-12-01T15:12:38.287 回答