جاري التحميل...

المؤقّتات

الغلاية فقرة، #pot. السكربت يكتب فيها cold. لا نموذج هنا ولا جرس الدكان.
المؤقت لا يوقف السكربت. السطر التالي يجري فورًا. الدالة تجري لاحقًا. مهلة 400 ملي ثانية تكتب hot. ألغها فتبقى الغلاية cold. الفاصل يعد 1 ثم 2 ثم 3 ويتوقف. السطر cold / hot / 3.

ليس الجرس

الصفحة السابقة جمعت same / 4 / undefined / number. كان ذلك المستند وvar وlet ونوع العرض. هذه الصفحة لا تقرأها. cold وhot كلمتان يكتبهما المؤقت على الغلاية.
السؤال الجديد: متى تتبدل الكلمة؟

السطر التالي لا ينتظر

setTimeout يطلب دالة وتأخيرًا بالملي ثانية. 400 أربعة أعشار الثانية، لا 400 ثانية. السجل تحت النداء يجري أولًا والغلاية ما زالت cold. الدالة تكتب hot وتسجّله لاحقًا.

يصل hot لاحقًا

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

السجل الأول cold. السجل اللاحق hot. السكربت لم يجلس 400 ملي ثانية.

ألغِ الغليان

setTimeout يُرجع معرّفًا. clearTimeout بذلك المعرّف يسقط الدالة. الغلاية صارت cold وhot لا يصل.

ألغِ قبل الغليان

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

السجل cold. الدالة أُسقطت، فالغلاية لا تصير hot.

عدّ ثلاث سكبات

setInterval ينادي الدالة مرة بعد مرة، هنا كل 300 ملي ثانية. كل نداء يضيف واحدًا. عند 3 يوقفها clearInterval. السجل هو 3، لا صعود بلا نهاية.

قف عند ثلاثة

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);

السجل 3. معرّف الفاصل هو tick. بلا clearInterval كان العدّ سيواصل الارتفاع.

المعرّف رقم

القيمة التي يُرجعها setTimeout رقم. ليست التأخير وليست كلمة hot. هذا المقطع يجدول دالة فارغة ليقرأ النوع فقط، ثم يلغيها حتى لا يجري شيء آخر.

معرّف المؤقت

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

السجل number.

الصفر ما زال لاحقًا

تأخير 0 لا يعني «قبل السطر التالي». الدالة تنتظر حتى ينتهي هذا السكربت. الغلاية تصير now، وتلك الكلمة تُسجَّل، وبعدها تسجّل الدالة later.

تأخير صفر

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

السجل الأول now. الثاني later. الصفر لم يقفز الطابور.

ماذا يعني التأخير

الوحدة ملي ثانية. صف الغلاية هو الذي تستخدمه هذه الصفحة.

📊 ماذا يعني التأخير

التأخير يعني سهل الخلط
0 بعد انتهاء هذا السكربت قبل السطر التالي
400 0.4 ثانية 400 ثانية
1000 ثانية واحدة دقيقة واحدة

السطر تحت الغلاية

السكربت يكتب cold ويخزّن تلك الكلمة فورًا. مهلة 400 ملي ثانية تخزّن hot. الفاصل يضيف واحدًا كل 300 ملي ثانية، يتوقف عند 3، ثم يجمع الكلمات الثلاث. hot يُخزَّن قبل السكبة الثالثة لأن 400 أصغر من 900.

عرض الصفحة — مؤقت الغلاية

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>

السطر cold / hot / 3. cold كان فوريًا. hot جاء من المهلة. 3 جاء من الفاصل. كلمة blank ذهبت. same / 4 / undefined / number هي الصفحة السابقة.

عند المنضدة

  1. اجعل الغلاية cold، وجدوِل hot لـ 400 ملي ثانية، وسجّل فورًا. السجل الأول cold. اللاحق hot.
  2. جدول hot ثم clearTimeout قبل أن يجري. السجل يبقى cold.
  3. عدّ بـ setInterval وتوقف عند 3. السجل 3.
  4. اقرأ typeof المعرّف. السجل number.
  5. استخدم تأخير 0. السجلان now ثم later.
  6. اقرأ سطر الصفحة: cold / hot / 3.

أخطاء عند المنضدة

الغلاية تعرض cold أو hot أو عدًّا. لا تعرض سطر الجرس.

  • توقع أن السجل الأول hot
  • نسيان clearTimeout، فيكتب غليانٌ أردت إسقاطه hot
  • ترك الفاصل يجاوز 3
  • قراءة 400 على أنها 400 ثانية
  • اعتبار تأخير 0 «قبل السطر التالي»
  • قراءة السطر كـ same / 4 / undefined / number

احتفظ بهذا

  • السطر التالي يجري قبل دالة المهلة
  • clearTimeout يسقط تلك الدالة وتبقى الغلاية cold
  • clearInterval يوقف العدّ عند 3
  • المعرّف من setTimeout رقم
  • تأخير 0 ما زال يسجّل now قبل later
  • سطر الصفحة cold / hot / 3

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
7
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى