2014-11-20 5 views
1

각 수취인 주소에 대해 고유 한 이벤트를 만들 수 있습니까? Javascript 이벤트 이미 터 | 동적 이벤트 이름

가 작동하지 않습니다 :

var EventEmitter = require("events").EventEmitter; 
var ee = new EventEmitter(); 

function emitpayment(address) { 
    ee.emit("payment"+address,data); 
} 

function receivepayment(address) { 
    ee.on("payment"+address, function (data) { 
      // whatever 
    }); 
} 

감사합니다,

+0

당신이 그것을 시도 해 봤나 : 당신이 방출 이벤트를 시작 전에

당신은 핸들러가 등록되어 있는지 확인해야합니까? 이벤트 이름은 문자열입니다. – Pointy

+0

예 .e console.log 뭔가를 ee.emit 후에 콘솔에 아무것도 쓰고 있지 않습니다. 또한 console.log에 ee.on 함수 내부에 이벤트가 트리거되지 않도록 아무 것도 쓰지 않습니다. – Egidi

+2

이벤트를 보내기 전에 * 이벤트 처리기를 등록해야합니다. – Pointy

답변

1

예 당신이 할 수 있습니다. 노드의 이벤트 이름 (어쨌든 주식 EventEmitter를 통해)은 단순한 문자열입니다.

var EventEmitter = require("events").EventEmitter; 
var ee = new EventEmitter(); 

function emitpayment(address, data) { 
    ee.emit("payment"+address,data); 
} 

function receivepayment(address) { 
    ee.on("payment"+address, function (data) { 
     console.log("received event payment" + address); 
     console.dir(data); 
    }); 
} 

receivepayment("giant metallic balloon"); 
emitpayment("giant metallic balloon", { hello: "world" });