🌌 JavaScript ile Evreni Yönetmek:

JavaScript Rehberi

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:

  1. setTimeout’un içindeki callback, zamanlayıcıya gönderilir.
  2. Zamanlayıcı süreyi sayar.
  3. Süre dolunca callback task queue (görev kuyruğu)’na eklenir.
  4. 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. 💛🌌⚡

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir