Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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 在NodeJS中重新分配事件发射器_Javascript_Node.js_Dom Events_Mqtt_Eventemitter - Fatal编程技术网

Javascript 在NodeJS中重新分配事件发射器

Javascript 在NodeJS中重新分配事件发射器,javascript,node.js,dom-events,mqtt,eventemitter,Javascript,Node.js,Dom Events,Mqtt,Eventemitter,我正在使用MQTT npm模块。 当触发myMqttObj.on('close',…)事件时,我调用myMqttObj.end(),然后用新连接重新分配它: myMqttObj= mqtt.connect(....) 通过这种方式,所有以前的myMqttObj.on()方法都在侦听新的发射器所有这些都非常有效 现在,我尝试创建自己的方法,用相同的npm模块创建新的MQTT连接。我只想隐藏使用简单字符串作为参数调用自定义方法的MQTT连接参数: var mySDK= require('./my

我正在使用MQTT npm模块。 当触发
myMqttObj.on('close',…)
事件时,我调用
myMqttObj.end()
,然后用新连接重新分配它:

 myMqttObj= mqtt.connect(....)
通过这种方式,所有以前的
myMqttObj.on()
方法都在侦听新的发射器所有这些都非常有效

现在,我尝试创建自己的方法,用相同的npm模块创建新的MQTT连接。我只想隐藏使用简单字符串作为参数调用自定义方法的MQTT连接参数:

var mySDK= require('./mySDK');
mySDK.mqttConnect("input",function(_inMqtt){
    if(_inMqtt!=null){
        inMqtt=_inMqtt;  //inMqtt is a global variable

        inMqtt.on('connect', function() {
           //do something here
        });

        inMqtt.on('close', function() {
            inMqtt.end();
            mySDK.mqttConnect("input",function(_inMqtt){
                inMqtt=_inMqtt;  //this assignment to the same Client object doesn't work
            });
        });
});
mqttConnect
方法只需调用
mqtt.connect
方法并返回客户机对象

我希望所有
inMqtt.on()
函数现在都在侦听新的客户机对象,而不是捕获到任何事件。
问题出在哪里?

“用新连接重新分配它:
myMqttObj=mqtt.connect(..)
。这样以前的所有myMqttObj.on()方法都在侦听新的发射器”,这绝对是非标准行为。一个新对象,一个新实例,总是意味着要初始化新的侦听器。如果您没有误解您看到的内容,那么他们正在做非常不可靠的事情——或者调用实际上没有创建新实例,而是返回旧实例。这应该记录在他们的API中。是的,这很奇怪,现在我认为这是对的,它不起作用。。我已经解决了用新对象创建新侦听器的问题