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.
- durata = 5 × 60.000 = 300.000 ms
- la scadenza viene fissata nell'istante in cui premi avvia
- un timer che conta i battiti sottrae un passo fisso a ogni aggiornamento, quindi gli aggiornamenti saltati sono tempo perso
- questo ricalcola scadenza − adesso, quindi gli aggiornamenti saltati non costano nulla
- 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.