Timer Conto alla Rovescia

Imposta ore, minuti e secondi, avvia il conto alla rovescia e ascolta un allarme chiaro quando arriva a zero — funziona anche in una scheda in background.

1.050 visualizzazioni

05:00

Come il Conto alla Rovescia Rimane Preciso

Un conto alla rovescia che sottrae semplicemente un secondo da un totale ogni volta che scatta setInterval sembra semplice, ma non è preciso nel tempo. Ogni "tick" presume che siano passati esattamente 1000 millisecondi, ma il ciclo eventi del browser può essere occupato — altri script, animazioni o una scheda in background — e i tick scattano con qualche millisecondo di ritardo. Questi piccoli ritardi si accumulano fino a diventare uno scarto visibile: un timer di 10 minuti costruito così può terminare diversi secondi prima o dopo il previsto quando arriva a zero.

Questo strumento evita il problema con un metodo diverso: calcola un timestamp obiettivo fisso nel momento in cui premi avvio — l'ora attuale più la durata scelta — e a ogni tick si limita a chiedere quanto tempo manca a quell'obiettivo, invece di contare all'indietro da un totale accumulato. Poiché il tempo restante viene sempre ricalcolato da due letture reali dell'orologio, qualsiasi ritardo accumulato nei tick si annulla automaticamente; il tempo mostrato resta corretto anche quando singoli tick scattano in ritardo.

Cosa Dovresti Sapere

Quando la scheda che stai cronometrando resta in background, i browser spesso limitano i timer per risparmiare batteria e CPU, facendoli scattare meno spesso del richiesto. L'approccio del timestamp obiettivo gestisce con eleganza anche questo caso: non importa quanti tick siano stati saltati, perché il conto alla rovescia continua comunque a confrontare l'orario obiettivo reale con l'orario attuale reale alla successiva esecuzione — arriva a zero nel momento corretto indipendentemente da quanto la scheda sia stata limitata nel frattempo.

  • Il suono di allarme viene generato all'istante con il nodo oscillatore della Web Audio API — nessun file audio da caricare, quindi non c'è ritardo prima che suoni.
  • Il titolo della scheda del browser si aggiorna con il tempo rimanente, così puoi dare un'occhiata a un'altra scheda e vedere comunque il conto alla rovescia.
  • Mettere in pausa salva la durata rimanente e ricalcola un nuovo timestamp obiettivo alla ripresa, quindi anche pausa e ripresa non introducono mai scarti.

Domande Frequenti

Sentirò l'allarme se sono su un'altra scheda?

Sì — il suono di avviso viene riprodotto da questa scheda indipendentemente da quale sia attiva, purché la scheda del browser resti aperta (non chiusa).

Il conto alla rovescia si mette in pausa se il portatile va in sospensione?

Si mette in pausa insieme al sistema, come qualsiasi timer del browser — quando risvegli il dispositivo, se l'orario obiettivo è già passato, mostrerà zero e avviserà immediatamente.

Posso impostare le ore, non solo i minuti?

Sì — ore, minuti e secondi sono tutti disponibili, quindi funziona da un cicalino di 10 secondi fino a un conto alla rovescia di più ore.

Perché il timer resta preciso su durate lunghe?

Perché non somma mai i singoli tick. Calcola un unico timestamp obiettivo fisso quando premi avvio e ricalcola "obiettivo meno adesso" a ogni tick, quindi un ritardo in un singolo tick non ha alcun effetto sul risultato finale — il timer arriva comunque a zero nell'esatto momento giusto.

La limitazione di una scheda in background manda in confusione il conto alla rovescia?

No. I browser rallentano i timer nelle schede inattive per risparmiare energia, quindi i tick possono scattare meno spesso, ma poiché ogni tick ricalcola il tempo rimanente dal timestamp obiettivo reale invece di contare i tick trascorsi, il conto alla rovescia arriva comunque a zero nel momento reale corretto.

Commenti

Ancora nessun commento — scrivi il primo!

Strumenti Simili