Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Async Deep Dive
  5. Q40. What is the difference between microtasks and macrotasks?
JavaScriptAsync Deep Dive

Q40. What is the difference between microtasks and macrotasks?

Event loop-এর task queue ও microtask queue-এর পার্থক্য — কোনটা আগে চলে।

JavaScript-এর event loop-এ কাজের দুটি সারি আছে — macrotask আর microtask। main code শেষ হওয়ার পর সবসময় আগে সম্পূর্ণ microtask queue শূন্য হওয়া পর্যন্ত চালানো হয়, তারপর একটি macrotask চালানো হয়।

আচরণ দেখুনjavascript
javascript
console.log("1: মূল কোড");

setTimeout(() => {
  console.log("5: setTimeout (macrotask)");
}, 0);

Promise.resolve().then(() => {
  console.log("3: Promise.then (microtask)");
});

queueMicrotask(() => {
  console.log("4: queueMicrotask (microtask)");
});

console.log("2: মূল কোড শেষ");

ধাপে ধাপে — প্রথমে main code চলে, তাই 1 তারপর 2 ছাপা হয়। এরপর microtask queue খালি করতে 3 এবং 4 চলে। সবশেষে একটি macrotask নিয়ে 5 চলে। তাই macro ও micro-এর সংখ্যা ছোট হলেও সবসময় আগে microtask চলে।

macrotask কোথা থেকে আসে — setTimeout, setInterval, fetch-এর network callback, I/O, DOM event, requestAnimationFrame। microtask কোথা থেকে আসে — Promise.then, catch, finally, queueMicrotask, এবং async/await-এর ভেতরের await অংশ।

অগ্রাধিকারjavascript
javascript
// microtask সবসময় আগে শেষ হয়
setTimeout(() => console.log("A: macrotask"), 0);

for (let i = 1; i <= 3; i++) {
  Promise.resolve().then(() => console.log("B" + i + ": microtask"));
}

console.log("C: main");

// output: C -> B1 -> B2 -> B3 -> A

দেখা যায় তিনটি microtaskই একসাথে queue-তে ঢুকে যায় এবং একটি macrotask চালানোর আগেই সব চলে। এটাই macrotask-এর প্রধান বৈশিষ্ট্য — একটি macrotask চলতে শুরু করলে তার ভেতর থেকে আসা microtask সবচেয়ে আগে চলে।

ভেতরে microtaskjavascript
javascript
// একটি macrotask চলতে শুরু করলে তার নিজের microtask আগে চলে
setTimeout(() => {
  console.log("1: macrotask শুরু");

  Promise.resolve().then(() => {
    console.log("2: macrotask ভেতরের microtask");
  });

  console.log("3: macrotask শেষ");
}, 0);

console.log("0: main");

// output: 0 -> 1 -> 3 -> 2

browser-এ rendering-এর সময়ও এই ক্রম থাকে — একটি macrotask ও তার সব microtask শেষ হওয়ার পরেই সাধারণত screen repaint হয়, তাই বারবার requestAnimationFrame না ডেকে বারবার DOM বদলালে চোখে ধরা পড়ে না।

বিষয়MicrotaskMacrotask
queuemicrotask queuetask (macrotask) queue
কখন চলেবর্তমান কাজের পরেইmicrotask শূন্য হলে
setTimeoutনয়হ্যাঁ
Promise.thenহ্যাঁনয়
একবারে কয়টিসবগুলো একসাথেএকটি একটি করে
সতর্কতা

একটি setTimeout callback-এর ভেতরে অনেক Promise তৈরি হলে সেগুলো পরের macrotask আসার আগেই সব চলে যায় — ফলে কাজের ক্রম হঠাৎ বদলে গেলে আশ্চর্যভাব হয়। শেষে শেষে ক্রম বোঝার জন্য console.log দিয়ে trace করুন।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Async Deep Dive বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com