कॉलबैक
कप एक पैराग्राफ है, #cup, और blank से शुरू होता है। इस पेज पर केतली का टाइमर नहीं है।
serve एक ऑर्डर और एक फ़ंक्शन लेता है। वह फ़ंक्शन कॉलबैक है: तुम सौंपते हो, serve बुलाता है। बुलावा serve के लौटने से पहले होता है, इसलिए अगली लाइन पेय पहले ही देख चुकी होती है। पंक्ति lida tea / poured होती है।
यह केतली नहीं
पिछला पेज तुरंत cold लिखता था और hot केवल 400 मिलीसेकंड बाद। उसकी पंक्ति cold / hot / 3 थी। टाइमर इंतज़ार करता है। serve नहीं करता। अगर setTimeout ढूँढ रहे हो, यह गलत काउंटर है।
सवाल: जो फ़ंक्शन तुमने सौंपा, उसे कौन बुलाता है?
पैरामीटर का नाम सिर्फ़ नाम है
serve के अंदर पैरामीटर का नाम done है। कॉल की जगह फ़ंक्शन का कोई नाम नहीं। serve को नाम से मतलब नहीं। मतलब इस बात से है कि उसे एक फ़ंक्शन मिला और वह उसे एक आर्ग्युमेंट के साथ बुलाए: ऑर्डर और शब्द tea।
बुलावा लौटने से पहले होता है
done(order + " tea") चलता है, कप भरता है, और तब serve खत्म होता है। कॉल के नीचे का लॉग पहले से पेय है।
function serve(order, done) {
done(order + " tea");
}
let cup = document.getElementById("cup");
serve("lida", function (drink) {
cup.textContent = drink;
});
console.log(cup.textContent);
लॉग lida tea है। कप blank नहीं रहा और कुछ रुका नहीं।
बुलावा भूल जाना
यह serve पेय बनाता है और रुक जाता है। done को नहीं बुलाता। जो फ़ंक्शन सौंपा था वह पड़ा रहता है। कप कॉल से पहले blank किया गया था और blank रहता है।
function serve(order, done) {
order = order + " tea";
}
let cup = document.getElementById("cup");
cup.textContent = "blank";
serve("lida", function (drink) {
cup.textContent = drink;
});
console.log(cup.textContent);
लॉग blank है। कोई त्रुटि नहीं फेंकी जाती। जो कॉलबैक कभी नहीं बुलाया जाता, वह चलता ही नहीं। पेय की स्ट्रिंग बनी और किसी ने ली नहीं।
दूसरा फ़ंक्शन, पहले के बाद
serve दो फ़ंक्शन ले सकता है। पहले done को पेय के साथ बुलाता है। after को तभी बुलाता है जब वह बुलावा लौट चुका हो। after पेय नहीं लेता। सिर्फ़ निशान लगाता है कि डालना हो गया।
function serve(order, done, after) {
done(order + " tea");
after();
}
let seen = [];
serve(
"lida",
function (drink) {
seen.push(drink);
},
function () {
seen.push("poured");
}
);
console.log(seen.join(" / "));
लॉग lida tea / poured है। serve के अंदर दोनों बुलावों की जगह बदलो तो शब्द भी बदल जाते हैं। क्रम बुलावों का है, उन फ़ंक्शन लिखने का नहीं।
पेज क्या जोड़ता है
पेज दूसरा serve इस्तेमाल करता है, जिसमें done और after हैं। पेय रखता है, फिर poured, और पंक्ति लिखता है। बीच में देरी नहीं।
कप के नीचे की पंक्ति
स्क्रिप्ट body के अंत में है। serve दोनों फ़ंक्शन पंक्ति जोड़ने से पहले बुलाता है।
<!DOCTYPE html>
<html>
<head>
<title>serve-cup — page</title>
</head>
<body>
<p id="cup">blank</p>
<p id="line">…</p>
<script>
function serve(order, done, after) {
done(order + " tea");
after();
}
let seen = [];
serve(
"lida",
function (drink) {
seen.push(drink);
},
function () {
seen.push("poured");
}
);
document.getElementById("line").textContent = seen.join(" / ");
document.getElementById("cup").textContent = seen[0];
</script>
</body>
</html>
पंक्ति lida tea / poured है। कप lida tea दिखाता है। blank चला गया। cold / hot / 3 पिछला पेज है।
काउंटर पर
serveको एक फ़ंक्शन सौंपो और उसे पेय के साथ बुलाने दो। लॉग lida tea है।- ऐसा
serveलो जोdoneकभी न बुलाए। लॉग blank रहता है। doneऔरafterसौंपो। लॉग lida tea / poured है।- पेज की पंक्ति पढ़ो: lida tea / poured।
काउंटर की चूक
कप पेय दिखाता है या blank रहता है। इंटरवल की गिनती नहीं दिखाता।
- उम्मीद करना कि
serveके नीचे का लॉग अभी blank हो, जबकिdoneबुलाया जा चुका है - मानना कि कॉलबैक तब भी चलता है जब
serveउसे न बुलाए - lida tea के लिए 400 मिलीसेकंड रुकना
afterको पहले बुलाकर poured को पेय से आगे रखना- पंक्ति को cold / hot / 3 पढ़ना
यह रखो
- कॉलबैक वह फ़ंक्शन है जो तुम सौंपते हो ताकि दूसरा उसे बुलाए
serveलौटने से पहलेdoneबुलाता है, इसलिए अगली लाइन lida tea पहले ही देख चुकी होती है- अगर
doneकभी नहीं बुलाया जाता, कप blank रहता है और त्रुटि नहीं होती afterतभी चलता है जबdoneलौट चुका हो- पेज की पंक्ति lida tea / poured है
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी