Temporizador de Cuenta Regresiva
Ajusta horas, minutos y segundos, inicia la cuenta regresiva y escucha una alarma clara al llegar a cero — funciona incluso en una pestaña en segundo plano.
1.054 visitas
Cómo Mantiene la Cuenta Regresiva Su Precisión
Una cuenta regresiva que simplemente resta un segundo de un total cada vez que se dispara setInterval suena sencilla, pero no es precisa a lo largo del tiempo. Cada "tick" asume que han pasado exactamente 1000 milisegundos, pero el bucle de eventos del navegador puede estar ocupado —otros scripts, animaciones o una pestaña en segundo plano— y los ticks se disparan con unos milisegundos de retraso. Esos pequeños retrasos se acumulan hasta convertirse en una desviación visible: un temporizador de 10 minutos construido así puede terminar varios segundos antes o después de lo previsto al llegar a cero.
Esta herramienta evita ese problema con un método distinto: calcula una marca de tiempo objetivo fija en el momento en que pulsas iniciar —la hora actual más la duración elegida— y en cada tick simplemente pregunta cuánto tiempo queda hasta ese objetivo, en lugar de contar hacia abajo desde un total acumulado. Como el tiempo restante siempre se recalcula a partir de dos lecturas reales del reloj, cualquier retraso acumulado en los ticks se cancela automáticamente; el tiempo mostrado sigue siendo correcto incluso cuando ticks individuales se disparan tarde.
Lo Que Deberías Saber
Cuando la pestaña que estás cronometrando queda en segundo plano, los navegadores suelen limitar los temporizadores para ahorrar batería y CPU, disparándolos con menos frecuencia de la solicitada. El enfoque de la marca de tiempo objetivo también maneja esto sin problemas: no importa cuántos ticks se hayan saltado, porque la cuenta regresiva sigue comparando la hora objetivo real con la hora actual real la próxima vez que se ejecuta — llega a cero en el momento correcto sin importar cuánto se haya limitado la pestaña mientras tanto.
- El sonido de alerta se genera al instante con el nodo oscilador de la Web Audio API — no hay que cargar ningún archivo de audio, así que no hay retraso antes de que suene.
- El título de la pestaña del navegador se actualiza con el tiempo restante, así que puedes echar un vistazo a otra pestaña y seguir viendo la cuenta regresiva.
- Pausar guarda la duración restante y recalcula una nueva marca de tiempo objetivo al reanudar, así que pausar y reanudar tampoco introducen desviación.
Preguntas Frecuentes
¿Escucharé la alarma si estoy en otra pestaña?
Sí — el sonido de alerta se reproduce desde esta pestaña sin importar cuál esté activa, siempre que la pestaña del navegador siga abierta (no cerrada).
¿La cuenta regresiva se pausa si mi portátil entra en reposo?
Se pausa junto con el sistema, como cualquier temporizador de navegador — al despertar el dispositivo, si el tiempo objetivo ya pasó, mostrará cero y avisará de inmediato.
¿Puedo fijar horas, no solo minutos?
Sí — horas, minutos y segundos están disponibles, así que sirve tanto para un zumbido de 10 segundos como para una cuenta regresiva de varias horas.
¿Por qué el temporizador se mantiene preciso en duraciones largas?
Porque nunca suma ticks individuales. Calcula una única marca de tiempo objetivo fija cuando pulsas iniciar y recalcula "objetivo menos ahora" en cada tick, así que un retraso en un tick concreto no tiene ningún efecto en el resultado final — el temporizador sigue llegando a cero en el momento exacto correcto.
¿La limitación de una pestaña en segundo plano descuadra la cuenta regresiva?
No. Los navegadores ralentizan los temporizadores en pestañas inactivas para ahorrar energía, así que los ticks pueden dispararse con menos frecuencia, pero como cada tick recalcula el tiempo restante a partir de la marca de tiempo objetivo real en lugar de contar ticks transcurridos, la cuenta regresiva sigue llegando a cero en el momento real correcto.
Herramientas Similares
Reportar un Problema
Temporizador de Cuenta Regresiva
Comentarios
Aún no hay comentarios — ¡sé el primero en escribir uno!