如何在MQTT.js中传递函数名替代完整函数作为事件回调?
用函数名替代MQTT connect事件匿名回调的实现方法
当然可以用具名函数替代匿名函数作为connect事件的回调,操作步骤如下:
- 提取具名函数
把原来匿名函数里的逻辑抽出来,定义一个有明确名称的函数,参数要和原回调保持一致(这里是connack参数):
function handleConnect(connack) { console.log('Connected') console.log(connack) }
- 传递函数名到事件监听
在client.on('connect', ...)中直接传入这个函数的名称(注意不要加括号,加括号会立即执行函数,而我们需要传递的是函数引用):
const client = mqtt.connect(host, optionsMQTT); client.on('connect', handleConnect);
这样修改后代码就能正常运行,效果和原来的匿名函数完全一致。原理是client.on方法需要接收一个函数作为回调,只要这个函数的参数匹配事件触发时传递的参数(这里是连接成功后的connack对象),就能正确执行逻辑。
内容的提问来源于stack exchange,提问作者Katoch
相关产品推荐
相关产品推荐

