Skip to main content
05:00

Un conto alla rovescia che conta i battiti arriva tardi; uno che guarda l'orologio no

I browser rallentano deliberatamente i timer nelle schede che non stai guardando. Un conto alla rovescia costruito sottraendo una quantità fissa a ogni battito perde esattamente il tempo che il browser ha trattenuto, quindi finisce in ritardo, a volte di minuti. Questo memorizza l'istante in cui deve finire e lo confronta con l'orologio di sistema a ogni aggiornamento, rendendo irrilevante il rallentamento.

Come funziona

  • Trasforma ore, minuti e secondi in un'unica durata e la conta alla rovescia.
  • Registra un istante di fine quando premi avvia, poi ricava la visualizzazione dall'orologio.
  • Mette in pausa e riprende sul tempo residuo, e blocca i campi mentre è in funzione.
durata = ore × 3.600.000 + minuti × 60.000 + secondi × 1.000  (millisecondi)
scadenza = adesso + durata
residuo = scadenza − adesso, riletto a ogni aggiornamento
concluso quando residuo ≤ 0

Esempio pratico

Un timer di cinque minuti, avviato e poi lasciato in una scheda in secondo piano.

  1. durata = 5 × 60.000 = 300.000 ms
  2. la scadenza viene fissata nell'istante in cui premi avvia
  3. un timer che conta i battiti sottrae un passo fisso a ogni aggiornamento, quindi gli aggiornamenti saltati sono tempo perso
  4. questo ricalcola scadenza − adesso, quindi gli aggiornamenti saltati non costano nulla
  5. quando torni alla scheda la lettura è già corretta

Il conto alla rovescia è preciso che tu lo guardi o no. Qualunque timer accumuli le proprie sottrazioni anziché consultare l'orologio andrà alla deriva proprio nelle condizioni in cui è più probabile che tu lo usi.

Come leggere il risultato

  • Il timer vive nella pagina. Chiudere la scheda lo distrugge e nessun allarme ti raggiungerà dopo: per ciò che davvero non puoi perdere, usa una sveglia del dispositivo, che sopravvive al browser.
  • La pausa conserva il tempo residuo e non la durata iniziale, quindi la ripresa continua da dove ti eri fermato. Il ripristino torna a quanto dicono i campi in quel momento, ed è per questo che i campi sono bloccati durante il funzionamento.
  • I secondi mostrati sono arrotondati per eccesso, quindi un timer che segna 1:00 ha davanti fra cinquantanove e sessanta secondi. Contato così, il display raggiunge 0:00 esattamente quando il tempo è davvero finito e non un secondo prima.
  • Le schede in secondo piano possono anche ritardare il momento in cui la fine viene notata. Il tempo residuo sarà corretto appena la pagina torna a girare, ma un browser che ha sospeso del tutto la scheda non può avvisarti al secondo esatto.

Domande frequenti

Il timer continua se cambio scheda?
Sì, e resta preciso. Poiché l'istante di fine viene fissato all'avvio e la visualizzazione deriva dall'orologio di sistema, il rallentamento in una scheda in secondo piano cambia ogni quanto il numero viene ridisegnato, mai quale sia il numero.
Posso chiudere la scheda ed essere comunque avvisato?
No. Un conto alla rovescia che gira in una pagina smette di esistere insieme a essa. Se perderlo avrebbe importanza, imposta anche una sveglia sul telefono o sul sistema operativo.