hola a todos, estoy enfrentando dificultades al usar una variable local de una función fuera de ella, ¿hay alguna forma de hacerlo?
instance.onmessage = (e) => { let color = e.data return color; }; Obtengo el color de instance.onmessage y tengo que usar este color en el código a continuación.
visualLinks.lineStyle( 2, link.edgeType === value ? 0xff0000 : color ); instance.onmessage = (e) => { let color=e.data return color; }; visualLinks.lineStyle( 2, link.edgeType === value ? 0xff0000 : color );Sé que esto está mal, pero tengo que realizar algo como esto solo como referencia, escribí este código.
No puede usar una variable local de una función fuera de esa función en JavaScript. Podría convertirlo en una variable global en su lugar:
let color = undefined; window.onmessage = (e) => { color = e.data }; // THIS WILL NOT WORK (because color is still undefined) console.log(color); visualLinks.lineStyle( 2, link.edgeType === value ? 0xff0000 : color ); En el caso de su código que usa onmessage() , su función de devolución de llamada onmessage no se habrá ejecutado (su función no se ejecuta hasta que se recibe un mensaje) a tiempo para cualquier código inmediatamente posterior.
Puede esperar para ejecutar ese código hasta que se reciba el mensaje moviéndolo dentro de la función.
let color = undefined; window.onmessage = (e) => { color = e.data; console.log(color); visualLinks.lineStyle( 2, link.edgeType === value ? 0xff0000 : color ); };Si esta es una respuesta demasiado simple para ser útil, puede tener mejor suerte si incluye un ejemplo más realista de lo que está tratando de hacer.