For some time, JavaScript events loop used to confuse me.

JavaScript is single-threaded, but still it handles thousands of things at the same time (e.g user clicks, network calls and even setting timers). I have always wondered how that worked. After studying and implementing it for a while, it has improved how I build web applications.

How I think of it

Imagine a chef (the primary thread) in the kitchen, instead of cooking one particular dish(order) completely, he

  1. Takes an order (Function)
  2. Starts cooking (Start async operation)
  3. Starts another order while waiting for the food to get simmered
  4. Returns to check the simmering order when possible

This is how JavaScript handles concurrency despite being single-threaded.

How I applied this to my projects

Important parts to note

Here is a rule to remember

Never block the call stack with synchronous long-running operations. If you need to process long tasks, you can

Getting to understand the JavaScript event loop and concurrency model has helped me to build more responsive applications. No freezing interfaces even during heavy processing because I now properly schedule task in different queues. Mastering the event loop and concurrency model means understanding exactly when and why your code executes, which make a better and more responsive application.