【发布时间】:2013-10-13 10:18:15
【问题描述】:
我意识到 nodejs 有一个强大的 EventEmitter 构造函数,它允许你发出事件。但是,EventEmitter 缺少的是一种让事件发射器查看侦听器返回的方法。
这是我追求的功能:
e = new FantasticEventEmitter();
e.on( 'event1', function( param1, param2, cb ){
console.log("First listener called...")
cb( null, 10 );
});
e.on( 'event1', function( param2, param2, cb ){
console.log("Ah, another listener called!");
cb( null, 20 );
});
e.emit( 'event1', 'firstParameter', 'secondParameter', function( err, res ){
console.log("Event emitted, now res will be [ 10, 20]");
});
基本上,我希望监听器能够注册,在事件触发时被调用,和:
- 向侦听器传递回调参数。回调将“收集”结果
- 发射器有一个回调,将与结果集合一起调用
在我重新发明轮子之前,是否有一个库已经这样做了?
【问题讨论】:
-
即使在发布了这个问题之后,我也看了又看,但是......不,我找不到现成的库。我认为最好的方法是从 EventEmitter 继承并重写
emit(),以便在将回调添加到其参数后使用async调用allListeners。这样做很简单,但是……从来没有人这样做过?也从来不需要它?真的吗?