JavaScript को सिंगल-थ्रेडेड वातावरण में चलाने के लिए डिज़ाइन किया गया था, जिसका अर्थ है कि एक ही समय में कई स्क्रिप्ट नहीं चल सकती हैं। ऐसी स्थिति पर विचार करें जहां आपको UI ईवेंट को संभालने, बड़ी मात्रा में API डेटा को क्वेरी करने और संसाधित करने और DOM में हेरफेर करने की आवश्यकता हो।
जावास्क्रिप्ट आपके ब्राउज़र को उस स्थिति में हैंग कर देगा जहां CPU उपयोग अधिक है। आइए एक सरल उदाहरण लेते हैं जहां जावास्क्रिप्ट एक बड़े लूप से गुजरता है:
<!DOCTYPE HTML> <html> <head> <title>Big for loop</title> <script> function bigLoop(){ for (var i = 0; i <= 10000; i += 1){ var j = i; } alert("Completed " + j + "iterations" ); } function sayHello(){ alert("Hello sir...." ); } </script> </head> <body> <input type = "button" onclick = "bigLoop();" value = "Big Loop" /> <input type = "button" onclick = "sayHello();" value = "Say Hello" /> </body> </html>
“बिग लूप” बटन पर क्लिक करने पर, निम्नलिखित दिखाई देता है:
ऊपर बताई गई स्थिति को वेब वर्कर्स का उपयोग करके नियंत्रित किया जा सकता है जो यूजर इंटरफेस को बाधित किए बिना सभी कम्प्यूटेशनल रूप से महंगे कार्यों को करेंगे और आमतौर पर अलग-अलग थ्रेड्स पर चलते हैं।