Javascript事件发射器|动态事件名称

时间:2014-11-20 14:26:44

标签: javascript events eventemitter

是否可以为每个付款地址创建一个独特的事件?

这不起作用:

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

此致

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做。 Node中的事件名称(无论如何,通过股票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" } );