Yükleniyor...

Zamanlayıcılar

Çaydanlık bir paragraftır, #pot. Betik içine cold yazar. Burada form yok, dükkân zili de yok.
Zamanlayıcı betiği durdurmaz. Sonraki satır hemen çalışır. İşlev sonra çalışır. 400 milisaniyelik zaman aşımı hot yazar. İptal edersen çaydanlık cold kalır. Aralık 1, 2, 3 sayar ve durur. Satır cold / hot / 3 olur.

Bu zil değil

Önceki sayfa same / 4 / undefined / number dizisini birleştirmişti. Belge, bir var, bir let ve genişliğin türüydü. Bu sayfa onları okumaz. cold ve hot, zamanlayıcının çaydanlığa yazdığı sözcüklerdir.
Yeni soru: sözcük ne zaman değişir?

Sonraki satır beklemez

setTimeout bir işlev ve milisaniye cinsinden gecikme ister. 400, saniyenin onda dördüdür, 400 saniye değil. Çağrının altındaki günlük önce gelir, çaydanlık hâlâ cold’tur. İşlev sonra hot yazar ve onu günlükler.

hot sonra gelir

javascript
let pot = document.getElementById("pot");
pot.textContent = "cold";
setTimeout(function () {
pot.textContent = "hot";
console.log(pot.textContent);
}, 400);
console.log(pot.textContent);

İlk günlük cold. Sonraki hot. Betik 400 milisaniye oturmadı.

Kaynamayı iptal et

setTimeout bir kimlik döndürür. O kimlikle clearTimeout işlevi bırakır. Çaydanlık cold olmuştu ve hot hiç gelmez.

Kaynamadan iptal

javascript
let pot = document.getElementById("pot");
pot.textContent = "cold";
let boil = setTimeout(function () {
pot.textContent = "hot";
}, 400);
clearTimeout(boil);
console.log(pot.textContent);

Günlük cold. İşlev bırakıldı, çaydanlık hot olmaz.

Üç kez dök

setInterval işlevi tekrar tekrar çağırır, burada her 300 milisaniyede. Her çağrı bir ekler. 3’te clearInterval durdurur. Günlük o 3’tür, bitmeyen bir tırmanış değil.

Üçte dur

javascript
let pot = document.getElementById("pot");
let n = 0;
let tick = setInterval(function () {
n = n + 1;
pot.textContent = String(n);
if (n === 3) {
clearInterval(tick);
console.log(pot.textContent);
}
}, 300);

Günlük 3. Aralığın kimliği tick. clearInterval olmasa sayaç yükselmeye devam ederdi.

Kimlik bir sayıdır

setTimeout’un döndürdüğü değer bir sayıdır. Gecikme değildir, hot sözcüğü de değildir. Bu parça boş bir işlevi yalnız türü okumak için kurar, sonra iptal eder.

Zamanlayıcı kimliği

javascript
let boil = setTimeout(function () {}, 400);
console.log(typeof boil);
clearTimeout(boil);

Günlük number.

Sıfır da sonradır

0 gecikme «sonraki satırdan önce» demek değildir. İşlev bu betik bitene kadar bekler. Çaydanlık now olur, o sözcük günlüklenir, ancak sonra işlev later günlükler.

Sıfır gecikme

javascript
let pot = document.getElementById("pot");
pot.textContent = "now";
setTimeout(function () {
console.log("later");
}, 0);
console.log(pot.textContent);

İlk günlük now. İkincisi later. Sıfır kuyruğu atlamadı.

Gecikme ne demek

Birim milisaniyedir. Çaydanlık satırı bu sayfanın kullandığı satırdır.

📊 Gecikme ne demek

Gecikme Demek Karıştırması kolay
0 bu betik bitince sonraki satırdan önce
400 0,4 saniye 400 saniye
1000 bir saniye bir dakika

Çaydanlığın altındaki satır

Betik cold yazar ve o sözcüğü hemen saklar. 400 milisaniyelik zaman aşımı hot saklar. Aralık her 300 milisaniyede bir ekler, 3’te durur ve üç sözcüğü birleştirir. hot üçüncü dökmeden önce saklanır, çünkü 400, 900’den küçüktür.

Sayfa demosu — çaydanlık

html
<!DOCTYPE html>
<html>
<head>
<title>kettle-timer — page</title>
</head>
<body>
<p id="pot">blank</p>
<p id="line">…</p>
<script>
let pot = document.getElementById("pot");
let seen = [];
pot.textContent = "cold";
seen.push(pot.textContent);
setTimeout(function () {
pot.textContent = "hot";
seen.push("hot");
}, 400);
let n = 0;
let tick = setInterval(function () {
n = n + 1;
if (n === 3) {
clearInterval(tick);
seen.push(String(n));
document.getElementById("line").textContent = seen.join(" / ");
}
}, 300);
</script>
</body>
</html>

Satır cold / hot / 3. cold hemen idi. hot zaman aşımından geldi. 3 aralıktan geldi. blank gitti. same / 4 / undefined / number önceki sayfadır.

Tezgâhta

  1. Çaydanlığı cold yap, hot’u 400 milisaniye için kur ve hemen günlükle. İlk günlük cold. Sonraki hot.
  2. hot kur, çalışmadan önce clearTimeout çağır. Günlük cold kalır.
  3. setInterval ile say ve 3’te dur. Günlük 3.
  4. Kimliğin typeof değerini oku. Günlük number.
  5. Gecikmeyi 0 yap. Günlükler now, sonra later.
  6. Sayfa satırını oku: cold / hot / 3.

Tezgâh hataları

Çaydanlık cold, hot ya da bir sayaç gösterir. Zilin satırını göstermez.

  • İlk günlüğün hot olmasını beklemek
  • clearTimeout’u unutmak, iptal etmek istediğin kaynama yine hot yazar
  • Aralığın 3’ü geçmesine izin vermek
  • 400’ü 400 saniye okumak
  • 0 gecikmeyi «sonraki satırdan önce» saymak
  • Satırı same / 4 / undefined / number diye okumak

Bunu tut

  • Sonraki satır, zaman aşımı işlevinden önce çalışır
  • clearTimeout o işlevi bırakır, çaydanlık cold kalır
  • clearInterval sayacı 3’te keser
  • setTimeout kimliği bir sayıdır
  • 0 gecikme de now’u later’dan önce günlükler
  • Sayfa satırı cold / hot / 3

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
7
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