Understanding the JavaScript Event Loop (Made Simple)
The JavaScript event loop is what makes asynchronous programming in JavaScript possible. Here's a simple explanation!
? Key Concepts
1. Single-Threaded
JavaScript can only do one thing at a time because it’s single-threaded.
console.log("Task 1");
console.log("Task 2");
Copy after login
? Output:
Task 1
Task 2
Copy after login
2. Synchronous vs. Asynchronous
-
Synchronous tasks: Run in order, one after another.
-
Asynchronous tasks: Don't block the main thread; they wait until they're ready to run.
console.log("Start");
setTimeout(() => {
console.log("Async Task");
}, 1000);
console.log("End");
Copy after login
? Output:
Start
End
Async Task
Copy after login
? How the Event Loop Works
-
Call Stack
- The place where tasks are executed one by one.
- When a function runs, it gets added to the stack. When it finishes, it gets removed.
-
Web APIs
- Asynchronous tasks (like setTimeout) are handled here. They wait in the background.
-
Callback Queue
- Once the asynchronous task finishes, its callback is added to the queue.
-
Event Loop
- The event loop checks:
- Is the call stack empty?
- If YES, it takes tasks from the callback queue and pushes them to the stack.
✨ Example: Step-by-Step
console.log("Start");
setTimeout(() => {
console.log("Timeout Task");
}, 2000);
console.log("End");
Copy after login
1️⃣ Call Stack
Step |
Call Stack |
Notes |
1 |
console.log |
Logs "Start" |
2 |
setTimeout |
Registers timeout task |
3 |
console.log |
Logs "End" |
2️⃣ Web APIs
-
setTimeout moves to Web APIs and starts the timer.
3️⃣ Callback Queue
- After 2000ms, the callback (() => console.log("Timeout Task")) moves to the queue.
4️⃣ Event Loop
- The event loop checks if the call stack is empty.
- The callback is moved to the stack and executed.
? Final Output:
Start
End
Timeout Task
Copy after login
? Visualizing the Event Loop
To truly understand the event loop, check out these resources:
- Loupe
- MDN: Concurrency Model
Happy coding! ?
The above is the detailed content of Understanding the JavaScript Event Loop (Made Simple). For more information, please follow other related articles on the PHP Chinese website!