Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

229
Vistas
¿Cómo maneja Chrome (y otros navegadores) un "setTimeout" establecido en más de 1000 milisegundos cuando una pestaña del navegador está oculta e inactiva?

Estoy depurando algunos problemas de inicio/cierre de sesión en un sitio mantenido por un proveedor externo para un cliente y espero que el título explique las cosas, pero hay más detalles a continuación.

Según tengo entendido, cualquier JavaScript que se ejecute en una pestaña oculta en Chrome alterará el valor de cualquier setTimeout a 1000 milisegundos para mantener el rendimiento general del sistema y no desperdiciar recursos. Como se explica en este sitio :

“Los navegadores hacen exactamente esto. Para las pestañas inactivas, aceleran automáticamente los temporizadores para que se ejecuten cada 1 segundo, independientemente del retraso original especificado en el código. Por ejemplo, si el código usaba originalmente setInterval() para ejecutar algún código cada 50 ms, una vez que la aplicación se mueve a una pestaña en segundo plano, el intervalo se convierte automáticamente en 1000 ms (1 segundo) ".

Eso definitivamente tiene sentido en el caso de un valor setTimeout que se establece en menos de 1000 milisegundos, como 50 milisegundos y demás. Pero, ¿qué pasa con los valores superiores a 1.000 milisegundos?

¿Establecerá Chrome el valor setTimeout en 1000 milisegundos aunque 900 000 milisegundos (también conocido como 900 segundos, también conocido como 15 minutos) es claramente más alto que eso?

Aquí hay un fragmento de código de la página web del proveedor que creo que está causando problemas que estoy tratando de ayudar a depurar. No hace su trabajo cuando está en una pestaña oculta.

 function keepSessionAlive() { if (externalAdminWindow && externalAdminWindow.closed) { externalAdminWindow = null; } if (externalFGWindow && externalFGWindow.closed) { externalFGWindow = null; } if (externalAdminWindow || externalFGWindow) { $find("ctl00_RadAjaxManager1").ajaxRequest("KeepAlive"); setTimeout(function() { keepSessionAlive(); }, 900000); } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La mayoría de los navegadores aceleran los tiempos de espera en las pestañas inactivas. Significa que todos los setTimeout tendrán un tiempo de espera mínimo de 1000 ms. Todo lo que sea más largo que eso debería funcionar como se esperaba. Entonces, respondiendo a su pregunta, el tiempo de espera de 15 minutos no debería verse afectado.

Consulte la sección Tiempos de espera en pestañas inactivas de setTimeout en setTimeout : https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#timeouts_in_inactive_tabs

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda