Logo
Unit 14 – Event Loop and Concurrency Model

Event Loop and Concurrency Model

Duration: 8 minutes

Greetings, passionate JavaScript coders!

In our journey through JavaScript, we approach the core of its non-blocking nature: the Event Loop and Concurrency Model. These form the bedrock of JavaScript’s asynchronous behavior.

Let’s delve deeper!

Understanding the JavaScript Runtime Environment

Single-threaded Nature: JavaScript operates on a single thread. Yet, it seems to do multiple things simultaneously, thanks to the Event Loop.

Concurrency Model: Environments like web browsers or Node.js, where JavaScript runs, aren’t single-threaded. They provide features (like Web APIs) that work outside the main thread, and once done, they push results into JavaScript’s execution queue.

Event Loop: The event loop checks if there’s any task in the queue to execute. If the main thread is free and there’s a task, it’s picked up.

Callback Queue: Asynchronous operations, once complete, send their callbacks to a task queue. The event loop, when the main stack is empty, dequeues the tasks and pushes them to the main thread.

Exercise

To fully understand, let’s delve into a hands-on task:

  • Write a piece of JavaScript code with asynchronous tasks. For instance, mix up setTimeout, promises, and other asynchronous operations.
  • Use an online visualization tool like Loupe to see how the event loop handles these tasks.
  • Analyze the order of execution.

Sample Code:

console.log('Start');
setTimeout(function() {
console.log('Timeout 1');
}, 2000);
setTimeout(function() {
console.log('Timeout 2');
}, 1000);
Promise.resolve().then(function() {
console.log('Promise 1');
}).then(function() {
console.log('Promise 2');
});
console.log('End');

Expected Output:

Start
End
Promise 1
Promise 2
Timeout 2
Timeout 1

Hints for the exercise:

  • The promises, being micro-tasks, get priority over macro-tasks like setTimeout.
  • Play with the delays in setTimeout and observe the changes in the order.

Conclusion

Well done! You’ve peeked into JavaScript’s heart, understanding its non-blocking essence. This knowledge equips you to write efficient code and troubleshoot asynchronous issues better. Happy coding!

You've completed this module!

Continue learning via other JDoodle's professional javascript Tutorials!

View Modules

Code on the Go with our Mobile App!

Unleash your coding potential anytime, anywhere!

Download Now!