टाइमर
केतली एक पैराग्राफ है, #pot। स्क्रिप्ट उसमें cold लिखती है। यहाँ फ़ॉर्म नहीं और दुकान की घंटी भी नहीं।
टाइमर स्क्रिप्ट को नहीं रोकता। अगली लाइन तुरंत चलती है। फ़ंक्शन बाद में चलता है। 400 मिलीसेकंड का टाइमआउट hot लिखता है। रद्द करो तो केतली cold रहती है। इंटरवल 1, 2, 3 गिनकर रुकता है। पंक्ति cold / hot / 3 होती है।
यह घंटी नहीं
पिछला पेज same / 4 / undefined / number जोड़ता था। वह दस्तावेज़, एक var, एक let और चौड़ाई का प्रकार था। यह पेज उन्हें नहीं पढ़ता। cold और hot वे शब्द हैं जो टाइमर केतली पर लिखता है।
नया सवाल: शब्द कब बदलता है?
अगली लाइन इंतज़ार नहीं करती
setTimeout एक फ़ंक्शन माँगता है और मिलीसेकंड में देरी। 400 चार दसवाँ सेकंड है, 400 सेकंड नहीं। कॉल के नीचे का लॉग पहले आता है, केतली अभी cold है। फ़ंक्शन बाद में hot लिखता है और उसे लॉग करता है।
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 कभी नहीं आता।
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 है, अंतहीन चढ़ाई नहीं।
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। यह टुकड़ा खाली फ़ंक्शन सिर्फ़ प्रकार पढ़ने के लिए लगाता है, फिर रद्द कर देता है।
let boil = setTimeout(function () {}, 400);
console.log(typeof boil);
clearTimeout(boil);
लॉग number है।
शून्य भी बाद में है
देरी 0 का मतलब «अगली लाइन से पहले» नहीं। फ़ंक्शन इस स्क्रिप्ट के खत्म होने तक रुकता है। केतली now होती है, वह शब्द लॉग होता है, उसके बाद फ़ंक्शन later लॉग करता है।
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 से छोटा है।
<!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 पिछला पेज है।
काउंटर पर
- केतली cold करो, hot को 400 मिलीसेकंड के लिए लगाओ, और तुरंत लॉग लो। पहला लॉग cold है। बाद वाला hot।
- hot लगाओ, फिर चलने से पहले
clearTimeoutबुलाओ। लॉग cold रहता है। setIntervalसे गिनो और 3 पर रुको। लॉग 3 है।- आईडी का
typeofपढ़ो। लॉग number है। - देरी 0 रखो। लॉग now हैं, फिर later।
- पेज की पंक्ति पढ़ो: 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 है
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी