Parece que ha habido un cambio en alguna versión reciente de Chrome y Firefox *, y ahora la ejecución de JavaScript parece ser diferente cuando la pestaña en la que se está ejecutando no está actualmente enfocada uno.Rendimiento de Javascript cuando se ejecuta en una pestaña desenfocada
Cuando ejecuto mis pruebas de unidad de Javascript, normalmente tardan unos 20 segundos en completarse, pero ahora, cuando la pestaña está desenfocada, demora más de 2000 segundos. Lo que es extraño, sin embargo, es que los tiempos de ejecución para cada prueba individual no se ven afectados (la mayoría todavía son < 10ms). El corredor de prueba que estoy usando agrega un setTimeout(0)
entre ejecutar cada prueba para que el navegador no se bloquee durante la ejecución, y ese parece ser el culpable.
¿Hay alguna manera de decirle al motor de Javascript que no "despriorice" esa pestaña? Es agradable poder ejecutar mis pruebas en segundo plano sin tener que mirarme a mí mismo ...
* lo siento, realmente no me importa lo suficiente como para tratar de instalar versiones antiguas para encontrar cuándo esto comenzó a suceder. Por lo menos, está sucediendo ahora en Firefox 5.0 y Chrome 12.
Y: Para implementar un 0 ms de tiempo de espera en un navegador moderno puede usar 'window.postMessage()' https: //developer.mozilla. org/en/DOM/window.setTimeout – James
@James - Publicaste tu comentario justo cuando actualicé mi respuesta con el artículo mencionado en esa página :) –
¡Las grandes mentes piensan igual ... y tienen el mismo nombre! :) – James