Estoy usando la Biblioteca JavaScript de ROS ( CDN ) que usa EventEmitter2 ( CDN ) para escuchar un tema. Consulte el siguiente fragmento de código:
var ros = new ROSLIB.Ros({ url: "ws://localhost:9090" }); class Subscriber extends EventEmitter2 { constructor(element) { super(); this.element = element; this.listener = new ROSLIB.Topic({ ros: ros, name: "/listener", messageType: "std_msgs/String", }); this.listener.subscribe(this.handleCallback); } handleCallback(message) { this.emit("update", message.data, this.element); // just for debugging. access a property of our element console.log("callback" + message.data + " " + this.element.innerHTML); } } Al recibir un mensaje, se activa un evento que maneja handleCallback . Aquí, usando console.log("callback" + message.data) , el mensaje (cadena) es visible.
Mi objetivo es recibir la nueva devolución de llamada como se muestra a continuación:
var element = document.getElementById("hello"); var subscriber = new Subscriber(element); subscriber.on("update", (data, element) => { console.log("received" + data + " " + element.innerHTML); });Sin embargo, hay dos problemas que se mencionan a continuación:
this.element arroja el siguiente error: Uncaught TypeError: Cannot read properties of undefined (reading 'innerHTML')emit this.emit("update", message.data) pero no tuve éxito. Además, utilicé this.emit("update", "my static message") pero no recibí una devolución de llamada.