我想使用 nodejs 的 mqtt 包。无论我在哪里,我都能找到这样的代码示例(来自 github 上的官方文档):
const mqtt = require('mqtt')
const client = mqtt.connect('mqtt://test.mosquitto.org')
client.on('connect', function () {
client.subscribe('presence', function (err) {
if (!err) {
client.publish('presence', 'Hello mqtt')
}
})
})
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString())
client.end()
})
我的问题是连接:mqtt.connect() 在回调之前:client.on('connect', ...)。我认为这是错误的顺序。
这不同于实例化客户端的 python 包,然后声明“on connect”和其他回调,然后才使用 client.connect() 方法。
有没有办法像 python 包中那样保证正确的顺序?
我不知道 python 包上写的是什么,但是如果我们看官方 Mqtt 码头 正确的顺序是:
client.on('message', console.log)
)来处理传入的消息您可以使用 promises 来做到这一点。
您可以做的是:
const client = await mqtt.connect('mqtt://test.mosquitto.org')
因此,在
mqtt.connect
上添加事件侦听器之前,您将能够等待 client
的结果。我强烈建议去 Javascript.info 上查看关于它们的精彩解释