像这样的几个事件只有一个监听程序:
// 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
没有名称!
谢谢!
发布于 2012-12-05 00:08:14
如果我真的需要知道是谁调用了它,我只会为每个侦听器创建一个中介“函数”:
例如:
emitter.on('event1', function(){
//something special with this event
listener();
});
发布于 2012-12-05 01:05:32
您始终可以将事件作为字符串参数传递给listener
函数。
例如:
emitter.on('event1', function() {
listener('event1');
});
然后,您的侦听器函数可以检查调用了哪个事件:
function listener(eventType) {
if (eventType === 'event1')
// Do something here
}
https://stackoverflow.com/questions/13706947
复制相似问题