Yükleniyor...

Zamanlayıcılar ve Planlama

JavaScript’te zamanlayıcılar ve planlama (Timers ve Scheduling), kodun belirli bir süre sonra veya düzenli aralıklarla çalışmasını sağlayan güçlü araçlardır. Bir ev inşa etmeye benzetirsek, duvarları örmeden önce temelin tamamen oturmasını beklemelisiniz. Benzer şekilde, web geliştirmede belirli görevlerin zamanlanması, kullanıcı deneyimini akıcı ve verimli hale getirir.
Kişisel bir web sitesinde, zamanlayıcılar sayfa animasyonlarını gecikmeli olarak göstermek için kullanılabilir. Bir blogda, yorumların veya içeriklerin belirli aralıklarla otomatik güncellenmesini sağlayabilir. E-ticaret sitelerinde, indirim ve kampanya geri sayımları için idealdir. Haber sitelerinde, başlıkların veya içeriklerin sayfa yenilenmeden güncellenmesini sağlar. Bu ders boyunca okuyucular, setTimeout ve setInterval gibi temel fonksiyonları kullanmayı, bunları etkin şekilde yönetmeyi ve hatalardan kaçınmayı öğrenecek.
Kodun verimli çalışması ve gereksiz kaynak kullanımının önlenmesi, zamanlayıcıları yönetmenin temelidir. Bu içerikte, başlangıç seviyesinden ileri seviyeye geçiş yapacak şekilde zamanlayıcıların kurulumu, durdurulması ve gerçek dünya uygulamaları üzerinde durulacaktır. Ayrıca, pratik ipuçları ve hata önleme yöntemleri ile zamanlayıcıları güvenli ve verimli şekilde kullanma becerisi kazandırılacaktır.

Temel Örnek

javascript
JAVASCRIPT Code
// Simple countdown timer
let count = 5;
let timer = setInterval(() => {
console.log("Geri sayım: " + count); // Print current count
count--;
if (count < 0) {
clearInterval(timer); // Stop when count is below 0
console.log("Süre doldu!"); // Final message
}
}, 1000); // Run every 1000ms (1 second)

Yukarıdaki örnekte, bir geri sayım sayacı oluşturduk. count değişkeni başlangıçta 5 olarak belirlenir ve her saniye bir azalır. setInterval fonksiyonu, belirtilen aralıklarla (1000 ms) callback fonksiyonunu tekrar tekrar çalıştırır.
Callback içinde önce count değeri konsola yazdırılır, ardından count-- ile değer bir azaltılır. Eğer count 0’ın altına düşerse, clearInterval(timer) çağrısı ile interval durdurulur. Bu adım kritik öneme sahiptir; aksi takdirde interval sonsuza kadar çalışmaya devam eder ve gereksiz kaynak tüketir. Son olarak "Süre doldu!" mesajı görüntülenir.
Bu örnek, bir e-ticaret sitesinde kampanya geri sayımı veya blogda içerik güncellemelerini göstermek için temel bir modeldir. Başlangıç seviyesindeki kullanıcıların sık sorduğu soru, clearInterval neden gerekli sorusudur. Cevap: Interval otomatik durmaz, onu durdurmak programcıya aittir.

Pratik Örnek

javascript
JAVASCRIPT Code
// Auto-refresh news feed every 10 seconds
function fetchNews() {
console.log("Yeni haberler alınıyor..."); // Simulate API request
// In real projects, fetch("api/news") and update DOM
}
let newsUpdater = setInterval(fetchNews, 10000); // Run every 10s
// Stop refreshing after 1 minute
setTimeout(() => {
clearInterval(newsUpdater);
console.log("Haber güncelleme durduruldu.");
}, 60000);

Bu pratik örnek, haber sitesinde başlıkları 10 saniyede bir güncellemek için kullanılır. fetchNews fonksiyonu API çağrısını simüle eder, gerçek projelerde fetch() ile veriler alınır ve DOM güncellenir.
setInterval(fetchNews, 10000) ile fonksiyon her 10 saniyede bir çalıştırılır. Ancak bu işlem süresiz çalışırsa kaynak tüketir ve gereksiz çağrılar oluşturur. Bu nedenle setTimeout kullanılarak 1 dakika sonra interval iptal edilir (clearInterval(newsUpdater) ve konsola bilgi mesajı yazdırılır.
Bloglarda yorum güncellemeleri, e-ticaret sitelerinde stok kontrolü ve haber sitelerinde içerik yenileme için bu teknik uygulanabilir. setInterval ve setTimeout kombinasyonu, tekrarlayan görevleri kontrol etmek ve durdurmak için oldukça etkilidir.

Zamanlayıcılarla ilgili en iyi uygulamalar ve yaygın hatalar:

  1. Her zaman interval ve timeout ID’lerini saklayın ve gerektiğinde clearInterval veya clearTimeout ile temizleyin.
  2. Modern ve okunabilir kod için arrow functions ve net callback tanımlamaları kullanın.
  3. API çağrıları gibi işlemlerde hata kontrolü uygulayın (try...catch).
  4. Performans optimizasyonu için interval sürelerini gereksiz kısa ayarlamayın.
    Yaygın hatalar:
  • Aktif interval’leri temizlememek → bellek sızıntısı ve performans düşüşü.
  • Nested interval kullanmak → çoklu çağrılar ve beklenmedik sonuçlar.
  • Yanlış timer referansı → durdurulamayan interval’ler.
    Debug ipuçları:

  • console.log ile callbacklerin çalışmasını kontrol edin.

  • Tarayıcı sekmesi arka planda ise throttling uygulayabileceğini unutmayın.
  • DevTools ile aktif interval’leri inceleyin.
    En iyi pratik, zamanlayıcıları başlatmak ve durdurmak için net bir mantık oluşturmaktır.

📊 Hızlı Referans

Property/Method Description Example
setTimeout Belirli süre sonra fonksiyon çalıştırır setTimeout(() => console.log("Merhaba"), 2000)
clearTimeout setTimeout ile oluşturulan timer’ı iptal eder clearTimeout(timerId)
setInterval Fonksiyonu belirli aralıklarla tekrarlar setInterval(() => console.log("tik"), 1000)
clearInterval setInterval ile oluşturulan interval’i iptal eder clearInterval(intervalId)
Date.now Mevcut zamanı milisaniye cinsinden verir console.log(Date.now())
requestAnimationFrame Animasyonları ekran yenilenmeden önce çalıştırır requestAnimationFrame(drawFrame)

Özetle, JavaScript’te zamanlayıcılar ve planlama, dinamik ve modern kullanıcı deneyimleri için temel bir araçtır. setTimeout ve setInterval ile aksiyonları zamanlayabilir, clearTimeout ve clearInterval ile kontrol sağlayabilirsiniz.
Zamanlayıcılar, DOM manipülasyonu ve backend ile veri iletişimi için kritik bir rol oynar. Örneğin, bir geri sayım göstermek veya periyodik veri güncellemek için kullanılır.
İleriye dönük olarak, requestAnimationFrame ile animasyon optimizasyonu, Web Workers ile arka plan görevleri, ve async/await ile zamanlayıcı entegrasyonu konularını inceleyebilirsiniz. Küçük projelerle pratik yapmak, örneğin portföy sayfasında saat göstermek veya e-ticaret kampanya sayacı oluşturmak, öğrenmeyi pekiştirir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu konudaki anlayışınızı pratik sorularla test edin.

3
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek