The event loop and call stack In Hindi

The event loop and call stack In Hindi

जावास्क्रिप्ट प्रोग्रामिंग में इवेंट लूप और कॉल स्टैक इक्वल प्रोग्रामिंग कांसेप्ट हैं, जावास्क्रिप्ट में इवेंट लूप और कॉल स्टैक का उपयोग तब करते है, जब प्रोग्रामर को जावास्क्रिप्ट प्रोग्रामिंग में एसिंक्रोनस कोड को क्रिएट और मैनेज करना हो।

The event loop and call stack In Hindi

So, let’s understand event loop and call stack in JavaScript programming better.

Call Stack in JavaScript.

जावास्क्रिप्ट प्रोग्रामिंग में कॉल स्टैक एक स्टैक डेटा स्ट्रक्चर प्रीव्यू मेथड है, जो  जावास्क्रिप्ट प्रोग्राम में रन होने वाले प्रोग्राम एक्सेक्यूशन रेफ़्रेन्स को ट्रैक करता है। जब मौजूदा प्रोग्राम में कोई फ़ंक्शन को कॉल किया जाता है, तो यह कॉल स्टैक में एक नया प्रोग्राम कॉल एक्सेक्यूशन रेफ़्रेन्स को क्रिएट करता है, और इस रेफ़्रेन्स को प्रोग्राम कॉल स्टैक के टॉप में ऐड किया जाता है। जब मौजूदा प्रोग्राम फ़ंक्शन एक्सेक्यूशन टर्मिनेट हो जाता है, तो ऑटोमेटिकली इस प्रोग्राम का एक्सेक्यूशन रेफ़्रेन्स कॉल स्टैक से पॉप हो जाता है।

How call stack works in JavaScript.

जब किसी प्रोग्राम में फ़ंक्शन कॉल को कॉल स्टैक पोजीशन में मूव किया जाता है।

तो यह प्रोग्राम एक्सेक्यूशन स्टैक के टॉप में जैसे, सबसे हाल ही में जोड़ा गया फ़ंक्शन से फ्रंट डायरेक्शन में मूव करता है।

जब कोई प्रोग्राम कॉल स्टैक फ़ंक्शन अपना एक्सेक्यूशन कम्पलीट करता है, तो उसे कॉल स्टैक आर्डर से पॉप डायरेक्शन में मूव कर दिया जाता है।

यदि यहाँ मौजूदा कॉल स्टैक आर्डर में एक्सेक्यूशन करने के लिए कोई और फ़ंक्शन पेंडिंग नहीं है, तो कॉल स्टैक एम्प्टी हो जाता है, और यह प्रोग्राम कॉल स्टैक एक्सेक्यूशन स्टेप को टर्मिनेट कर देता है।

Call Stack Program JavaScript Example.

function numberone() {

    console.log(‘this is a number one call stack element’);

}

function numbertwo() {

    console.log(‘this is a number two call stack element’);

}

numberone();  // here numberne() is pushed onto the call stack

numbertwo(); // here numbertwo() is pushed onto the call stack

Here in this example.

  • प्रोग्राम में जब numberone() कॉल स्टैक को कॉल किया जाता है, और इसे कॉल स्टैक आर्डर में आगे मूव किया जाता है, फिर इसे मौजूदा प्रोग्राम में एक्सेक्यूट किया जाता है।
  • जैसे ही numberone() कॉल स्टैक प्रोसेस टर्मिनेट होने के बाद, इसे स्टैक आर्डर से पॉप में मूव कर दिया जाता है।
  • इसी तरह फिर, numbertwo () को कॉल स्टैक में कॉल किया जाता है, और इसे स्टैक आर्डर में मूव किया जाता है, और यह एक्सेक्यूट हो कर टर्मिनेट हो जाता है।

Event Loop in JavaScript.

जावास्क्रिप्ट प्रोग्राम में इवेंट लूप कोड को एक्सेक्यूट करने, प्रोग्राम ईवेंट को कलेक्ट करने और फिर इसे प्रोसेस करने, और जावास्क्रिप्ट में सब-टास्कस जैसे, एसिंक्रोनस कॉलबैक और प्रॉमिसेस को एक्सेक्यूट करने के लिए यह रेस्पोंसिबल है।

How does the event loop work in JavaScript.

  • जावास्क्रिप्ट प्रोग्राम में कोई कोड डिफ़ॉल्ट रूप से सिंक्रोनस आर्डर में रन होता है, जिसका मतलब है कि प्रोग्राम कोड स्टेप बाय स्टेप लाइन बाय लाइन एक्सेक्यूट होता है।
  • लेकिन, जब प्रोग्राम में एसिंक्रोनस ऑपरेशन जैसे, सेटटाइमआउट, प्रॉमिसेस, या I/O टास्क को फेस करना पड़ता है. तो उन्हें वेब API या Node.js API जैसे, अन्य एनवायरनमेंट में ऑफलोड किया जाता है।
  • मौजूदा जावास्क्रिप्ट प्रोग्राम में एसिंक्रोनस टास्क कम्पलीट होने के बाद, कॉलबैक या प्रॉमिसेस हैंडलर को कॉलबैक कतार जिसे, मैसेज कतार भी कहा जाता है, उस में ऐड किया जाता है।
  • जहा इवेंट लूप लगातार कॉल स्टैक और कॉलबैक कतार को मॉनिटर करता है।
  • यदि कॉल स्टैक एम्प्टी है, तो यह इवेंट लूप एक्सेक्यूशन के लिए कॉलबैक कतार से पहले टास्क को कॉल स्टैक में मूव कर देगा।
  • जहा इवेंट लूप यह तय करता है कि प्रोग्राम एसिंक्रोनस कोड सिंक्रोनस कोड के एक्सेक्यूशन को डिस्टर्ब न करे और जावास्क्रिप्ट प्रोग्राम को एक साथ कई टास्कस को मैनेज और कण्ट्रोल करने की परमिशन प्रोवाइड करता है।

Let’s take a look at how these work together.

  • जब आप जावास्क्रिप्ट प्रोग्राम में कोई सिंक्रोनस फ़ंक्शन को रन करते हैं, तो यह उस फंक्शन को कॉल स्टैक में ऐड कर देता है, और इसे प्रॉपर एक्सेक्यूट किया जाता है।
  • यदि प्रोग्राम में कोई एसिंक्रोनस ऑपरेशन परफॉर्म होता है, जैसे, setTimeout()), तो इवेंट लूप उस प्रोग्राम टास्क ऑपरेशन को वेब API पर मूव कर देता है. जैसे, प्रोग्राम में टाइमर की प्रतीक्षा करना आदि है।
  • एक बार जब मौजूदा प्रोग्राम में टाइमर या एसिंक्रोनस ऑपरेशन टास्क कम्पलीट हो जाता है, तो इस कॉलबैक को कॉलबैक कतार आर्डर में मूव कर दिया जाता है।
  • यहाँ इवेंट लूप यह चेक करता है कि कॉल स्टैक एम्प्टी है या नहीं है। यदि यहाँ कॉल स्टैक एम्प्टी है, तो यह कॉलबैक प्रोसेस को कतार से कॉल स्टैक पर मूव करता है, जहाँ इसे बाद में एक्सेक्यूट किया जाएगा।

Example with asynchronous code in JavaScript.

console.log(“began”);

setTimeout(function() {

  console.log(“Time out”);

}, 0);

console.log(“terminate”);

Here in this example above.

  • यहाँ इस प्रोग्राम में “began” को सिंक्रोनस एक्सेक्यूशन के पोरश के रूप में तुरंत लॉग कर देता है।
  • जहा setTimeout() फंक्शन कॉल एक एसिंक्रोनस प्रोग्राम ऑपरेशन है। इसे वेब API पर मूव कर देता है, जहाँ यह पर्टिकुलर टाइमआउट 0ms की वेट करता है।
  • यहाँ “terminate” को लॉग किया जाता है, क्योंकि यह सिंक्रोनस कोड सेटटाइमआउट  का वेट किए बिना प्रोग्राम एक्सेक्यूशन प्रोसेस को कंटिन्यू रखता है।
  • जब मौजूदा प्रोग्राम में सिंक्रोनस कोड टर्मिनेट हो जाता है, और कॉल स्टैक एम्प्टी हो जाता है, तो यह सेटटाइमआउट से कॉलबैक को कॉलबैक कतार से कॉल स्टैक में मूव किया जाता  है, और इसमें सिस्टम “टाइमआउट” भी लॉग किया जाता है।

Call Stack vs Event Loop in JavaScript Programming Conclusion.

यह जावास्क्रिप्ट प्रोग्राम में कॉल स्टैक कोड के सिंक्रोनस एक्सेक्यूशन को कण्ट्रोल और मैनेज करता है।

जहा इवेंट लूप एसिंक्रोनस टास्कस को कॉलबैक कतार से कॉल स्टैक में ट्रांसफर करके मैनेज करता है, जब यह एम्प्टी हो जाता है।