Contenido

¿Cuando nuestro javascript está demasiado tiempo ejecutándose?

7 ene

+ 3

¿Cuantas veces nos hemos encontrado con una ventana como la de abajo al ejecutar un bucle realmente largo?

firefox_dialog

Seguramente muchas, pero ¿alguna vez te habías planteado que criterios iba a usar el navegador para lanzar dicho mensaje? Pues al parecer hay gente que si lo ha hecho y ha sacado las siguientes conclusiones:

  • Internet Explorer salta si se sobrepasan los 5 millones de declaraciones javascript. Puede modificarse directamente desde el registro de Windows.
  • Firefox interpreta que un script se ha vuelto inestable a los 10 segundos de ejecución. También podemos cambiarlo desde about:config.
  • Safari/WebKit indica en su código que el mensaje nos lo mostrará tras 5 segundos de ejecución de un script. Podemos incrementar este tiempo desde el menú desarrollo.
  • Chrome no especifica un tiempo concreto, pero se ha detectado que está entre los 5 y los 10 segundos de ejecución. Además es el más salvaje de todos ya que en lugar de parar el script no cierra la página completa.
  • Opera no tiene limitación de tiempo de scripts, algunas pruebas alcanzaron minutos de ejecución y Opera seguía ejecutando el script.
  • lo malo es que ninguno (al menos los que eh probado) indica donde esta el error,
    obviamente la idea es ir tras los loops, y checkear que las condiciones se cumplan en un rango y no queden infinitamente ejecutandose, pero seria bueno si el navegador tirara alguna informacion.
    el “depurar” de firefox no se que hace, a mi me cuelga el navegador

  • citando a Marcelo:
    “lo malo es que ninguno (al menos los que eh probado) indica donde
    esta el error”

    Ni debería indicarlo. Tú lo estás viendo como programador que depura su página. Pero si estan en Gmail o navegando y el js se cuelga, ¿de qué te sirve saber dónde se trabó?

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.