জাভাস্ক্রিপ্ট একটি একক-থ্রেডেড পরিবেশে চালানোর জন্য ডিজাইন করা হয়েছে, যার অর্থ একাধিক স্ক্রিপ্ট একই সময়ে চলতে পারে না৷ এমন একটি পরিস্থিতি বিবেচনা করুন যেখানে আপনাকে UI ইভেন্টগুলি পরিচালনা করতে হবে, ক্যোয়ারী করতে হবে এবং প্রচুর পরিমাণে API ডেটা প্রক্রিয়া করতে হবে এবং DOM ম্যানিপুলেট করতে হবে৷
সিপিইউ ব্যবহার বেশি হলে জাভাস্ক্রিপ্ট আপনার ব্রাউজার হ্যাং করবে। আসুন একটি সাধারণ উদাহরণ নেওয়া যাক যেখানে জাভাস্ক্রিপ্ট একটি বড় লুপের মধ্য দিয়ে যায়:
<!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>
"বিগ লুপ" বোতামে ক্লিক করলে, নিম্নলিখিতটি দৃশ্যমান হয়:
উপরে ব্যাখ্যা করা পরিস্থিতিটি ওয়েব ওয়ার্কারদের ব্যবহার করে পরিচালনা করা যেতে পারে যারা ব্যবহারকারীর ইন্টারফেসকে বাধা না দিয়ে গণনাগতভাবে ব্যয়বহুল সমস্ত কাজ করবে এবং সাধারণত আলাদা থ্রেডে চলবে৷