Javascript 在NodeJS中重新分配事件发射器
我正在使用MQTT npm模块。 当触发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
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中。是的,这很奇怪,现在我认为这是对的,它不起作用。。我已经解决了用新对象创建新侦听器的问题