只有一个听众附加到这样的几个事件:
// emitter is an instance of events.EventEmitter..
emitter.on('event1', listener);
emitter.on('event2', listener);
emitter.on('event3', listener);
emitter.on('event4', listener);
function listener() {
// I need to find which event was emitted and as a result, this listener was called.
}
请注意,arguments.callee.caller.name
无法在Node中使用,因为events.EventEmitter.on
方法会调用匿名函数,因此callee.caller
没有名称!
谢谢!
答案 0 :(得分:0)
如果我真的需要知道是谁调用它,我会为每个听众创建一个中间“功能”:
例如:
emitter.on('event1', function(){
//something special with this event
listener();
});
答案 1 :(得分:-1)
您始终可以将事件作为字符串参数传递给listener
函数。
例如:
emitter.on('event1', function() {
listener('event1');
});
然后你的监听器函数可以检查调用了哪个事件:
function listener(eventType) {
if (eventType === 'event1')
// Do something here
}