Persiste una GRAN pregunta ... ¿por qué no verifica el valor de la variable cada vez que se cambia?
He utilizado setTimeout() para retrasar un bucle para verificar que el servidor realice pseudo-server-push (lo que significa que el navegador envía una solicitud al servidor). Incluso a intervalos de 10 segundos, consumía demasiados recursos de la CPU y ralentizaba considerablemente la respuesta del navegador (especialmente para las máquinas de taller baratas).
Tiene que cambiar su paradigma de pensamiento lejos de la programación impulsada por eventos .NET de escritorio cuando se trata de javascript. Un bucle persistente no es bueno para el rendimiento.
Hay dos opciones:
El diseño de su flujo de proceso de aplicación de tal manera que ya sabe en qué parte del código se podría cambiar esa variable y comprobar si se cambia la variable cada vez que alguno de esos puntos en código ha ejecutado . Lo sé, esto parece incomprensiblemente tedioso si vienes de C#, C o C++.
Sin embargo, creo que la mejor opción es crear un elemento de formulario HTML de entrada de texto oculto.
<FORM NAME='dingoSam'>
<INPUT TYPE='hidden' onChange='changed()' NAME='bingoSem'/>
</FORM>
Toda mi código que necesitaba compartir un semáforo haría referencia dingoSam.bingoSem para cambiar su valor.
Debe explotar el sistema de gestión de eventos del navegador en lugar de crear su propio bucle de eventos porque el tiempo de ejecución de javascript explota su colaboración con los procesos del sistema operativo para optimizar sus controladores de eventos. Mientras que su propio bucle de eventos escrito en JavaScript está lejos de estar en una colaboración óptima con los procesos del sistema operativo.
No quiero desechar el evento. Solo quiero retrasarlo. Esperaba que hubiera una manera directa que no implique reconstruir el enlace y redirigir al usuario (el destino depende del enlace en el que hizo clic el visitante). – Michael