Aman Raj’s Post

🧠 Microtasks vs Macrotasks in JavaScript If you’ve ever wondered why Promise.then() runs before setTimeout(), this is the reason 👇 🔹 What are Macrotasks? Macrotasks are large tasks scheduled to run later. Examples: setTimeout setInterval setImmediate (Node.js) DOM events I/O operations setTimeout(() => { console.log("Macrotask"); }, 0); 🔹 What are Microtasks? Microtasks are high-priority tasks that run immediately after the current execution, before any macrotask. Examples: Promise.then / catch / finally queueMicrotask MutationObserver Promise.resolve().then(() => { console.log("Microtask"); }); 🔹 Execution Order (Very Important 🔥) console.log("Start"); setTimeout(() => console.log("Macrotask"), 0); Promise.resolve().then(() => console.log("Microtask")); console.log("End"); Output: Start End Microtask Macrotask 🔹 Why This Happens? JavaScript follows this rule: 1️⃣ Execute synchronous code 2️⃣ Run all microtasks 3️⃣ Run one macrotask 4️⃣ Repeat 👉 Microtask queue is always drained first 🔹 Common Interview Gotcha 😅 setTimeout(() => console.log("timeout"), 0); Promise.resolve() .then(() => console.log("promise 1")) .then(() => console.log("promise 2")); Output: promise 1 promise 2 timeout 💡 Takeaway Microtasks = urgent callbacks Macrotasks = scheduled callbacks Understanding this helps you: ✅ Debug async bugs ✅ Avoid UI freezes ✅ Write predictable async code If this cleared up the event loop for you, drop a 👍 #JavaScript #EventLoop #AsyncJS #FrontendDevelopment

To view or add a comment, sign in

Explore content categories