【发布时间】:2020-07-21 00:01:43
【问题描述】:
我试图在 vue.js 中与 Paho 建立 MQTT 连接,但我的选项对象有一些问题。
Vue.component('componente', {
template: `<div></div>`,
data: () => ({
mqtt: null,
options: {
timeout: 3,
onSuccess: () => this.success(), //here is the problem
onFailure: () => this.failure(),
},
host: "10.0.0.11",
port: 8083,
client: "WebClient",
topic: "mqtt"
}),
methods: {
success: () => {
console.log("Conexion completa");
this.mqtt.subscribe(this.topic);
},
failure: (msg) => {
console.log("error");
console.error(msg);
},
message(msg){
console.log("Mensaje " + msg.payloadString);
},
connect(){
console.log("conectando");
this.mqtt = new Paho.MQTT.Client(this.host,this.port,this.client);
this.mqtt.onMessageArrived = this.message;
this.mqtt.connect(this.options);
}
},
mounted () {
this.connect();
}
});
这什么都不做,永远不会调用success 方法。但如果我改变,.connect 就可以了。
this.mqtt.connect({onSuccess: () => {this.mqtt.subscribe(this.topic)}});
以前,我在数据上调用函数时遇到了很多问题,给了我诸如“成功不是函数”之类的错误。现在,这不会显示任何错误。
编辑:下一个代码工作,但订阅功能什么都不做
this.mqtt.connect({onSuccess: this.success});
【问题讨论】:
-
不会
this指的是新功能的本地范围吗?我认为您正在尝试实现onSuccess: this.success。
标签: javascript vue.js mqtt arrow-functions paho