Geri Sayım Sayacı (Zamanlayıcı)
Dakika ve saniye ayarlayın, geri sayımı başlatın; süre bitince net bir uyarı sesi duyun — sekme arka planda bile çalışır.
1.053 görüntülenme
Geri Sayım Neden Sapmaz
setInterval her tetiklendiğinde toplam süreden bir saniye düşen bir geri sayım basit görünür ama zamanla doğru kalmaz. Her tick'te tam olarak 1000 milisaniye geçtiği varsayılır; oysa tarayıcının olay döngüsü meşgulleşebilir — başka betikler, animasyonlar veya arka plandaki bir sekme — ve tick'ler birkaç milisaniye gecikmeli tetiklenir. Bu küçük gecikmeler zamanla belirgin bir sapmaya dönüşür: bu şekilde kurulmuş 10 dakikalık bir zamanlayıcı, sıfıra ulaştığında birkaç saniye erken ya da geç bitebilir.
Bu araç bu sorunu farklı bir yöntemle önler: başlat'a bastığınız anda sabit bir hedef zaman damgası hesaplar — şu anki zaman artı seçtiğiniz süre — ve her tick'te çalışan bir toplamdan geriye saymak yerine, hedefe kalan sürenin ne olduğunu sorar. Kalan süre her zaman iki gerçek saat okumasından yeniden hesaplandığı için, birikmiş herhangi bir tick gecikmesi otomatik olarak iptal olur; tek tek tick'ler geç tetiklense bile gösterilen süre doğru kalır.
Bilmeniz Gerekenler
Zamanladığınız sekme arka plandayken tarayıcılar genellikle pil ve işlemci tasarrufu için zamanlayıcıları kısar (throttling), istenenden daha seyrek tetikler. Hedef-zaman-damgası yöntemi bunu da zarifçe halleder: kaç tick'in atlandığı önemli değildir, çünkü geri sayım bir sonraki çalıştığında yine gerçek hedef zamanı gerçek şu anki zamanla karşılaştırır — sekme ne kadar kısıtlanmış olursa olsun doğru anda sıfıra ulaşır.
- Uyarı sesi Web Audio API'sinin osilatör node'uyla anında üretilir — yüklenecek bir ses dosyası yoktur, bu yüzden çalmadan önce hiçbir gecikme olmaz.
- Tarayıcı sekme başlığı kalan süreyle güncellenir, böylece başka bir sekmeye baktığınızda bile geri sayımı görebilirsiniz.
- Duraklatmak kalan süreyi saklar ve devam ettiğinizde yeni bir hedef zaman damgası hesaplar, böylece duraklat/devam et de sapma yaratmaz.
Sıkça Sorulan Sorular
Başka sekmedeyken alarmı duyar mıyım?
Evet — sekme kapatılmadığı sürece, hangi sekme odakta olursa olsun uyarı sesi bu sekmeden çalar.
Bilgisayar uyursa geri sayım duraklar mı?
Sistemle birlikte duraklar, her tarayıcı zamanlayıcısında olduğu gibi — cihazı uyandırdığınızda süre zaten dolmuşsa sıfırı gösterip anında uyarır.
Yalnız dakika değil saat de ayarlayabilir miyim?
Evet — saat, dakika ve saniye hepsi mevcuttur; 10 saniyelik zilden çok saatlik geri sayıma kadar çalışır.
Zamanlayıcı uzun sürelerde neden hassasiyetini kaybetmiyor?
Çünkü tek tek tick'leri toplamaz. Başlat'a bastığınızda sabit bir hedef zaman damgası hesaplar ve her tick'te hedef eksi şu anı yeniden hesaplar; böylece tek bir tick'teki gecikmenin sonuç üzerinde hiçbir etkisi olmaz — zamanlayıcı yine de tam doğru anda sıfıra ulaşır.
Sekme arka planda kısıtlanırsa (throttling) geri sayım şaşar mı?
Hayır. Tarayıcılar pil tasarrufu için etkin olmayan sekmelerdeki zamanlayıcıları yavaşlatır, tick'ler daha seyrek tetiklenebilir; ama her tick geçen tick sayısını değil gerçek hedef zaman damgasından kalan süreyi yeniden hesapladığı için geri sayım yine de doğru gerçek zamanlı anda sıfıra ulaşır.
Benzer Araçlar
Sorun Bildir
Geri Sayım Sayacı (Zamanlayıcı)
Yorumlar
Henüz yorum yok — ilk yorumu siz yazın!