setTimeout’ın Zaman Manipülasyon Gücü
“Küçücük bir fonksiyon… koca bir zaman çizgisini parmaklarının ucuna bırakır.”
– Sen, artık resmi bir JS Time Lord olarak 😘
🌠 1. setTimeout Nedir? Zaman Garsonu mu, Yoksa Mini Bir Time Machine mi?
JavaScript dünyasında setTimeout(), aslında şunu yapar:
“Hey JS, şu fonksiyonu, şu kadar süre sonra çağır.”
Hani iPhone’da sabah alarmı kurarsın ya…
İşte bu onun programlama versiyonu, ama çok daha havalısı.
🧙♂️ Sen komutu veriyorsun, JavaScript zamanı programlıyor.
Basit görünür… ama zaman manipülasyonunun ilk adımıdır.
👉 Temel Hali:
setTimeout(() => {
console.log("Bu mesaj 2 saniye geç ortaya çıkıyor!");
}, 2000);
Bu kadar.
Bir fonksiyon yaz → Zaman koy → Geleceğe fırlat.
🌌 2. Çalışma Mantığı: Gerçeğin Arkasındaki Evren – Event Loop
Zamanı bükmek aslında şöyle çalışıyor:
- setTimeout’un içindeki callback, zamanlayıcıya gönderilir.
- Zamanlayıcı süreyi sayar.
- Süre dolunca callback task queue (görev kuyruğu)’na eklenir.
- Event Loop sahnenin boş olduğunu görünce callback’i çalıştırır.
Bu aslında zaman yolculuğunun gizli mekanizmasıdır.
🎭 Basitleştirilmiş Drama Versiyonu
- Sen: “JS, 2 saniye sonra bu fonksiyonu çağır.”
- JS: “Tamam. Not aldım.”
- 2 saniye sonra JS: “Fonksiyon kuyruğa düştü.”
- Event Loop: “Sahne boş, gel bakayım buraya callback.”
⏱️ 3. Kod Akışı Neden Karışıyor?
A → C → B Efsanesi (Zaman Hilesi!)
console.log("A");
setTimeout(() => {
console.log("B");
}, 0);
console.log("C");
📌 Çıktı:
A
C
B
NEDEN?
Çünkü 0 ms bile gelecektir.
“0 ms sonra” demek “bir sonraki event loop turunda” demektir.
💡 İpucu:setTimeout(fn, 0) =
→ “Fonksiyonu hemen değil, sonraki turda çalıştır.”
Bu sayede büyük hesaplamaları bölebilir, tarayıcıyı dondurmadan yükleri dağıtabilirsin.
🧨 4. Gerçek Hayatla Birleştir: Loading Animasyonu Simülasyonu
console.log("Yükleniyor...");
setTimeout(() => {
console.log("🔮 Zaman kırılması tamamlandı!");
}, 3000);
console.log("Hazırlık devam ediyor...");
Bu üç adım da zaman akışını gösterir →
JS zaman kontrolünü mükemmel bir şekilde yönetir.
🛠️ 5. Profesyonel Kullanımlar – Sadece Time Lord’lara Özel 🧙♀️✨
🟣 1. İşlem Yoğun Kodları Bölmek
Görünmez ama hayat kurtaran bir teknik:
function agirIs() {
for (let i = 0; i < 3000000000; i++) {}
}
setTimeout(() => {
console.log("Aşırı yükleri sonraki tura attım!");
}, 0);
agirIs();
Bu sayede:
- UI donmaz
- Tarayıcı kilitlenmez
- Kod daha akıcı çalışır
🟣 2. Animasyon Simülasyonu
let i = 0;
function animasyon() {
console.log("Frame:", i);
i++;
if (i < 10) {
setTimeout(animasyon, 200);
}
}
animasyon();
Bu, JS’nin manuel animasyon motoru gibi çalışır.
🟣 3. API Timeout Mekanizması Yazmak
const kontrol = setTimeout(() => {
console.log("⏳ API çok geç cevap verdi!");
}, 3000);
fetch("https://example.com")
.then(() => {
clearTimeout(kontrol);
console.log("API zamanında döndü!");
});
Bu gerçek bir senaryo:
Sunucudan geç cevap gelirse uyarı ver.
🟣 4. Debounce – Kullanıcının Ruh Hâlini Okuyan Fonksiyon
setTimeout = Debounce’ın kalbi ❤️
let timeout;
function yazma(event) {
clearTimeout(timeout);
timeout = setTimeout(() => {
console.log("Kullanıcı gerçekten yazmayı bitirdi:", event.target.value);
}, 500);
}
Bu sayede:
- Fazla işlem yapılmaz
- Performans artar
- Arama kutuları daha akıllı olur
🔥 6. Bilmen Gereken Gizli Bonus İpuçları
💡 1. setTimeout’un ID’sini sakla → iptal edebilirsin
const id = setTimeout(() => {
console.log("Bu asla çalışmayacak.");
}, 2000);
clearTimeout(id);
💡 2. İç içe setTimeout = Daha stabil bir setInterval
function tekrar() {
console.log("Ping!");
setTimeout(tekrar, 1000);
}
tekrar();
Bu daha güvenilir çünkü:
- Bir önceki işlem bitmeden yenisi başlamaz
- Gecikmeler daha kontrollüdür
💡 3. setTimeout asla tam zamanında çalışmaz
Her zaman minimum süre verir.
Kesinlik yok. Çok yoğun JS varsa gecikir.
🌟 7. Sonuç: setTimeout = JavaScript’in Minik Ama Tüm Evreni Yöneten Büyücüsü
- Zaman planlar
- Akış yönetir
- UI donmasını engeller
- Animasyon bile oluşturur
- Karmaşık görevleri kolaylaştırır
- “0 ms hilesi” ile geleceğe mesaj atmana izin verir
Ve tek bir amaç için var:
“Kodunu zamanla uyum içinde dans ettirmek.” 💃🕺
Sen artık bir JS Time Lord’sun.
Zamanı bükmeye hoş geldin. 💛🌌⚡
