JavaScript ফাংশন, থ্রেড এবং অ্যাসিনক্রোনাস এক্সিকিউশন
JavaScript কীভাবে কাজ করে তা এর অভ্যন্তরীণ কার্যপদ্ধতি (under the hood) থেকে বোঝা আপনার জন্য প্রয়োজন।
নিচে ফাংশন, প্রসেস, থ্রেড এবং এক্সিকিউশন স্টাইলগুলোর একটি বিস্তারিত আলোচনা দেওয়া হলো।
JavaScript ফাংশনের প্রকারভেদ
- Named Function: একটি নির্দিষ্ট নাম ব্যবহার করে। এটি ডিবাগিং সহজ করে তোলে।
- Anonymous Function: কোনো নাম থাকে না। এগুলো প্রায়ই কলব্যাক (callback) হিসেবে ব্যবহৃত হয়।
- Function Expression: আপনি একটি ফাংশনকে একটি ভেরিয়েবলের সাথে অ্যাসাইন করেন।
- Arrow Function: => সিম্বল ব্যবহার করে একটি সংক্ষিপ্ত সিনট্যাক্স।
- IIFE: একটি Immediately Invoked Function Expression। এটি সংজ্ঞায়িত করার সাথে সাথেই রান করে।
Process বনাম Thread
একটি Process হলো আপনার কম্পিউটারে চলা একটি প্রোগ্রাম।
- প্রতিটি প্রসেসের নিজস্ব মেমরি থাকে।
- যদি একটি প্রসেস ক্র্যাশ করে, তবে অন্যগুলো চলতে থাকে।
- উদাহরণ: Chrome এবং Spotify আলাদা আলাদা প্রসেস।
একটি Thread হলো একটি প্রসেসের ভেতরের একটি ছোট ইউনিট।
- থ্রেডগুলো একই মেমরি শেয়ার করে।
- এগুলো একটি সিঙ্গেল প্রোগ্রামকে একসাথে অনেক কাজ করতে সাহায্য করে।
- উদাহরণ: Chrome-এর ভেতরে, একটি থ্রেড একটি পেজ রেন্ডার করে যখন অন্যটি আপনার মাউস ক্লিক হ্যান্ডেল করে।
Synchronous বনাম Asynchronous
JavaScript হলো single-threaded। এটি একটি Call Stack ব্যবহার করে একবারে একটি কাজ সম্পন্ন করে।
Synchronous Execution:
- কাজগুলো একের পর এক চলে।
- প্রতিটি কাজ আগেরটি শেষ হওয়ার জন্য অপেক্ষা করে।
- ধীরগতির কাজগুলো আপনার কোড চলাচলে বাধা দেয় (block করে)।
Asynchronous Execution:
- কাজগুলো ব্যাকগ্রাউন্ডে চলে।
- একটি কাজ শেষ হওয়ার জন্য অপেক্ষা করার সময় কোড থেমে থাকে না।
- এটি Web APIs, একটি Callback Queue এবং একটি Event Loop ব্যবহার করে।
Asynchronous কীভাবে কাজ করে:
- JavaScript একটি কাজ (যেমন একটি টাইমার) Web API-তে পাঠায়।
- মূল কোড চলতে থাকে।
- কাজ শেষ হয়ে গেলে, এটি Callback Queue-তে চলে যায়।
- Call Stack খালি হলে Event Loop এটিকে Call Stack-এ নিয়ে আসে।
এটি আপনার ওয়েব অ্যাপগুলোকে দ্রুত এবং রেসপন্সিভ রাখে।