¿Puede detener la ejecución de JavaScript sin bloquear el navegador? La forma en que normalmente detendría la ejecución es hacer un infinito while()
-loop, pero en el caso de FireFox, bloquea el navegador hasta que el ciclo haya finalizado.Detener la ejecución de JavaScript sin bloquear el navegador
¿Cuál es su opinión sobre esto?
Estoy tratando de anular window.confirm()
para implementar mi propio diálogo con HTML. Estoy haciendo esto para no tener que cambiar el código existente (es una base de código bastante grande).
Necesito ser capaz de detener la ejecución para permitir la entrada del usuario; a su vez devolver un valor lógico como la función confirman norma hace:
if (confirm("..."))
{
// user pressed "OK"
}
else
{
// user pressed "Cancel"
}
actualización
Que yo sepa; esto no se puede hacer usando setTimeout()
o setInterval()
ya que estas funciones ejecutan el código que se les da de forma asincrónica.
'' setTimeout' y setInterval' * no * ejecutar código de forma asíncrona, que cuentan hacia abajo y luego agregue la función de devolución de llamada a una cola que se llama cuando el hilo queda inactivo. Las funciones en sí mismas se ejecutan sincrónicamente. –
Vea también: http://stackoverflow.com/questions/2056747/javascript-puzzle-to-solve-window-confirm-divconfirmstrmessage –
@Andy E - 'window.setTimeout' (y' window.setInterval') crea devoluciones de llamada asincrónicas . El flujo de programa normal continúa inmediatamente después de llamarlo y la devolución de llamada se ejecuta en una fecha posterior, dependiendo de la duración del temporizador. El hecho de que JavaScript es de un solo subproceso y la devolución de llamada, una vez que ha comenzado a ejecutarse, y bloquea la ejecución de otro código no impide que haya sido asíncrono. –