Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript事件发射器|动态事件名称_Javascript_Events_Eventemitter - Fatal编程技术网

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”的参数。上面的代码(使用该修复程序)运行良好。