Javascript事件发射器|动态事件名称
是否可以为每个付款地址创建唯一的事件 这不起作用:Javascript事件发射器|动态事件名称,javascript,events,eventemitter,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, functi
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
});
}
关于,是的,你可以做到。节点中的事件名称(无论如何,通过stock 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" } );
你试过了吗?事件名称只是字符串。是的,在ee.emit之后我在console.log中记录了一些内容,它不会在控制台上写入任何内容。我还在ee.on函数中记录了一些内容。它没有写入任何内容,因此事件没有被触发。在发出事件之前,您必须注册事件处理程序。您还必须在上面的示例代码中声明
数据
,作为“emitpayment”的参数。上面的代码(使用该修复程序)运行良好。