JavaScript is single-threaded, meaning it can only do one thing at a time. So how does it handle tasks like fetching data, timers, or user input without freezing the page? The secret lies in the event loop — a powerful mechanism that lets JavaScript perform asynchronous operations smoothly.
In this blog, we’ll explain how the event loop works in simple terms, so you understand what happens behind the scenes.
🧠 What is the Event Loop?
The event loop is a process that continuously checks if the call stack is empty and then executes any pending callbacks from the task queue. This allows JavaScript to run non-blocking code, even though it’s single-threaded.
🏗️ Key Concepts
- Call Stack: Where functions are executed in order.
- Web APIs: Browser features like
setTimeout
,fetch
, DOM events. - Task Queue (Callback Queue): Holds functions ready to run once the stack is empty.
- Event Loop: Moves callbacks from the queue to the stack.
📚 How It Works Step-by-Step
- JavaScript runs synchronous code and pushes functions to the call stack.
- When an asynchronous function (like
setTimeout
) is called, the browser handles it via Web APIs. - Once the async operation finishes, its callback is pushed to the task queue.
- The event loop checks if the call stack is empty; if yes, it pushes the next callback from the task queue to the stack.
- The callback executes, and the cycle repeats.
🧪 Example: setTimeout
javascriptCopyEditconsole.log("Start");
setTimeout(() => {
console.log("Inside setTimeout");
}, 0);
console.log("End");
Output:
sqlCopyEditStart
End
Inside setTimeout
Even with
0
delay, thesetTimeout
callback runs after the synchronous code because it’s placed in the task queue.
🔄 Microtasks and Macrotasks
- Microtasks: Promises,
process.nextTick
, MutationObserver callbacks. - Macrotasks:
setTimeout
,setInterval
, I/O callbacks.
The event loop executes all microtasks before moving to the next macrotask, which can affect timing and order.
💡 Why It Matters
Understanding the event loop helps you:
- Debug async issues
- Avoid race conditions and bugs
- Write performant and responsive apps
- Understand frameworks like Node.js, React
Conclusion:
The JavaScript event loop is the magic behind smooth and non-blocking apps. Knowing how it works lets you write smarter code and solve tricky bugs related to asynchronous operations.
🔥 Pro Tip: Try experimenting with promises,
setTimeout
, and async functions to see the event loop in action!