अतुल्यकालिक जावास्क्रिप्ट
"मैं बाद में समाप्त करूँगा!"
अन्य कार्यों के समानांतर चलने वाले कार्यों को अतुल्यकालिक कहा जाता है
एक अच्छा उदाहरण है जावास्क्रिप्ट सेटटाइमआउट ()
अतुल्यकालिक जावास्क्रिप्ट
पिछले अध्याय में उपयोग किए गए उदाहरण बहुत सरल थे।
उदाहरणों का उद्देश्य कॉलबैक फ़ंक्शंस के सिंटैक्स को प्रदर्शित करना था:
उदाहरण
function myDisplayer(something) {
document.getElementById("demo").innerHTML
= something;
}
function myCalculator(num1, num2, myCallback) {
let sum = num1 + num2;
myCallback(sum);
}
myCalculator(5, 5, myDisplayer);
उपरोक्त उदाहरण में, myDisplayer
एक फ़ंक्शन का नाम है।
myCalculator()
इसे तर्क के रूप में पारित किया जाता है।
वास्तविक दुनिया में, कॉलबैक का उपयोग अक्सर अतुल्यकालिक कार्यों के साथ किया जाता है।
एक विशिष्ट उदाहरण जावास्क्रिप्ट है setTimeout()
।
एक टाइमआउट की प्रतीक्षा में
जावास्क्रिप्ट फ़ंक्शन का उपयोग करते समय setTimeout()
, आप टाइम-आउट पर निष्पादित करने के लिए कॉलबैक फ़ंक्शन निर्दिष्ट कर सकते हैं:
उदाहरण
setTimeout(myFunction, 3000);
function myFunction() {
document.getElementById("demo").innerHTML = "I love You !!";
}
उपरोक्त उदाहरण में, myFunction
कॉलबैक के रूप में उपयोग किया जाता है।
myFunction
setTimeout()
तर्क के रूप में पारित किया जाता है।
3000 टाइम-आउट से पहले मिलीसेकंड की संख्या है, इसलिए
myFunction()
3 सेकंड के बाद कॉल किया जाएगा।
जब आप किसी फ़ंक्शन को तर्क के रूप में पास करते हैं, तो याद रखें कि कोष्ठक का उपयोग न करें।
दाएं: सेटटाइमआउट (myFunction, 3000);
गलत:सेटटाइमआउट (myFunction (), 3000);
किसी फ़ंक्शन के नाम को किसी अन्य फ़ंक्शन के तर्क के रूप में पास करने के बजाय, आप इसके बजाय हमेशा एक संपूर्ण फ़ंक्शन पास कर सकते हैं:
उदाहरण
setTimeout(function() { myFunction("I love You !!!"); }, 3000);
function myFunction(value) {
document.getElementById("demo").innerHTML = value;
}
उपरोक्त उदाहरण में, function(){ myFunction("I love You !!!"); }
कॉलबैक के रूप में उपयोग किया जाता है। यह एक पूर्ण कार्य है। पूरा फ़ंक्शन एक तर्क के रूप में सेटटाइमआउट () को पास किया जाता है।
3000 टाइम-आउट से पहले मिलीसेकंड की संख्या है, इसलिए
myFunction()
3 सेकंड के बाद कॉल किया जाएगा।
अंतराल की प्रतीक्षा में:
जावास्क्रिप्ट फ़ंक्शन का उपयोग करते समय setInterval()
, आप प्रत्येक अंतराल के लिए निष्पादित किए जाने वाले कॉलबैक फ़ंक्शन को निर्दिष्ट कर सकते हैं:
उदाहरण
setInterval(myFunction, 1000);
function myFunction() {
let d = new Date();
document.getElementById("demo").innerHTML=
d.getHours() + ":" +
d.getMinutes() + ":" +
d.getSeconds();
}
उपरोक्त उदाहरण में, myFunction
कॉलबैक के रूप में उपयोग किया जाता है।
myFunction
setInterval()
तर्क के रूप में पारित किया जाता है।
1000 अंतराल के बीच मिलीसेकंड की संख्या है, इसलिए
myFunction()
इसे हर सेकंड कहा जाएगा।
फाइलों का इंतजार
यदि आप किसी बाहरी संसाधन (जैसे स्क्रिप्ट या फ़ाइल) को लोड करने के लिए कोई फ़ंक्शन बनाते हैं, तो आप सामग्री के पूरी तरह लोड होने से पहले उसका उपयोग नहीं कर सकते।
कॉलबैक का उपयोग करने का यह सही समय है।
यह उदाहरण एक HTML फ़ाइल ( mycar.html
) को लोड करता है, और फ़ाइल के पूरी तरह से लोड होने के बाद HTML फ़ाइल को वेब पेज में प्रदर्शित करता है:
फ़ाइल की प्रतीक्षा में:
function myDisplayer(some) {
document.getElementById("demo").innerHTML = some;
}
function getFile(myCallback) {
let req = new XMLHttpRequest();
req.open('GET', "mycar.html");
req.onload = function() {
if (req.status == 200) {
myCallback(this.responseText);
} else {
myCallback("Error: " + req.status);
}
}
req.send();
}
getFile(myDisplayer);
उपरोक्त उदाहरण में, myDisplayer
कॉलबैक के रूप में उपयोग किया जाता है।
myDisplayer
getFile()
तर्क के रूप में पारित किया जाता है।
नीचे इसकी एक प्रति है mycar.html
:
mycar.html
<img src="img_car.jpg" alt="Nice car" style="width:100%">
<p>A car is a wheeled, self-powered motor vehicle used for transportation.
Most definitions of the term specify that cars are designed to run primarily on roads,
to have seating for one to eight people, to typically have four wheels.</p>
<p>(Wikipedia)</p>