Javascript event emitter | Dynamic event name

1.3k Views Asked by At

Is it possible to create a unique event for each payment address?

This is not working:

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
     });
}

Regards,

1

There are 1 best solutions below

0
On BEST ANSWER

Yes you can do that. Event names in Node (well, via the stock EventEmitter anyway) are simple strings.

You do need to make sure that the handler is registered before you start emitting events:

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" } );