2013-05-19 4 views
1

Я пытаюсь «соединить» двух прослушивателей событий, чтобы запускать их с одним событием. Более того, во время этой «цепочки» я мог передавать дополнительные значения в качестве аргументов слушателям, которые следуют.Мост двух прослушивателей событий с одним событием

Я пытался реализовать его следующим образом

var events = require('events'); 

var receiv = new events.EventEmitter(); 
var midl = new events.EventEmitter(); 

receiv.on("test", function() { 
    console.log("HERE", arguments); 
}); 

midl.on("test", receiv.on.bind(receiv, "test", "foo", "bar")); 

midl.emit("test", 123); 

Однако этот подход, кажется, ошибка в EventEmitter, как я получаю следующую ошибку

TypeError: listener must be a function 
    at TypeError (<anonymous>) 
    at EventEmitter.addListener (events.js:130:11) 
    at EventEmitter.emit (events.js:95:17) 
    at Object.<anonymous> (myEventTest.js:12:6) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 

Приветствия.

P.S. Я использую узел v0.10.5

ответ

2

Извините за сам ответ, но я нашел решение.

var events = require('events'); 

var receiv = new events.EventEmitter(); 
var midl = new events.EventEmitter(); 

receiv.on("test", function() { 
    console.log("HERE", arguments); 
}); 

midl.on("test", receiv.emit.bind(receiv, "test", "foo", "bar")); 

midl.emit("test", 123); 
Смежные вопросы