এই অধ্যায়ে শিখবো JavaScript এর Event Loop, Call Stack, এবং Task Queue কী এবং কীভাবে JavaScript অ্যাসিঙ্ক্রোনাস কাজ পরিচালনা করে।
১. JavaScript কীভাবে কাজ করে?
-
JavaScript হলো Single-threaded ভাষা, মানে একবারে শুধু একটা কাজ করতে পারে।
-
কিন্তু আমরা জানি, JavaScript অ্যাসিঙ্ক্রোনাস কাজও করতে পারে, যেমন: API কল, টাইমার ইত্যাদি।
-
এটি সম্ভব হয় Event Loop ও Call Stack এর মাধ্যমে।
২. Call Stack কী?
-
Call Stack হলো একটি স্ট্যাক ডেটা স্ট্রাকচার যেখানে ফাংশনগুলো একের পর এক সাজানো থাকে।
-
যখন একটি ফাংশন কল হয়, তখন সেটি স্ট্যাকের উপরে চলে যায়।
-
ফাংশন শেষ হলে স্ট্যাক থেকে সরানো হয়।
-
যদি কল স্ট্যাক ফাঁকা থাকে, তখন নতুন ফাংশন চালানো হয়।
৩. Example: Call Stack এর কাজ
function first() {
console.log("প্রথম ফাংশন");
second();
console.log("প্রথম ফাংশন শেষ");
}
function second() {
console.log("দ্বিতীয় ফাংশন");
}
first();
কমান্ডের স্ট্যাক:
-
first()কল -
second()কল -
second()শেষে স্ট্যাক থেকে সরানো -
first()শেষে স্ট্যাক থেকে সরানো
৪. Web APIs ও Task Queue
-
ব্রাউজার কিছু কাজ (যেমন: setTimeout, HTTP requests) Web APIs এ পাঠায়।
-
কাজ শেষ হলে, callback ফাংশনগুলো Task Queue-তে চলে যায়।
-
JavaScript শুধুমাত্র Call Stack ফাঁকা হলে Task Queue থেকে ফাংশনগুলো Call Stack এ নিয়ে আসে।
৫. Event Loop কী?
-
Event Loop হলো একটি লুপ যা দেখে Call Stack খালি কি না।
-
খালি থাকলে Task Queue থেকে একটি কাজ Call Stack এ পাঠায়।
-
এই প্রক্রিয়ায় JavaScript অ্যাসিঙ্ক্রোনাস কাজ করে।
৬. উদাহরণ:
console.log("১");
setTimeout(() => {
console.log("২");
}, 0);
console.log("৩");
আউটপুট:
১
৩
২
কারণ setTimeout এর callback Task Queue-তে যায়, Call Stack ফাঁকা হলে পরে চলে।
৭. Microtask Queue (Promise Jobs)
-
Promise এর
.then()callback গুলো Microtask Queue তে যায়, যেটা Task Queue এর থেকে বেশি প্রাধান্য পায়। -
তাই Promise callback গুলো আগে এক্সিকিউট হয়।
console.log("start");
Promise.resolve().then(() => console.log("promise"));
console.log("end");
আউটপুট:
start
end
promise
সারাংশ
| উপাদান | কাজ |
|---|---|
| Call Stack | ফাংশন এক্সিকিউশন ট্র্যাক করে |
| Web APIs | অ্যাসিঙ্ক্রোনাস কাজ হ্যান্ডেল করে |
| Task Queue | Callback রাখে যেগুলো পরে এক্সিকিউট হবে |
| Microtask Queue | Promise এর callback রাখে, প্রাধান্য বেশি |
| Event Loop | Call Stack ফাঁকা হলে Task/Microtask Queue থেকে কাজ নেয় |
এই অধ্যায় শেষে আপনি বুঝতে পারছেন:
-
JavaScript এর সিঙ্গেল থ্রেডেড প্রকৃতি
-
Call Stack ও Event Loop কীভাবে কাজ করে
-
অ্যাসিঙ্ক্রোনাস কাজ কিভাবে পরিচালিত হয়
-
Promise ও setTimeout এর পার্থক্য
পরবর্তী অধ্যায়:
অধ্যায় ৩৮: JavaScript Error Handling (try, catch, finally)
লিখুন: “অধ্যায় ৩৮ শুরু করো” — তাহলে শিখবো কীভাবে JavaScript এ এরর ধরতে হয় এবং হ্যান্ডেল করতে হয়।
