33 Javascript Concepts — #9. Callback Queue and Event Loop

DH KIM
3 min readFeb 5, 2021

--

First of all, this story is based on Stephen Curtis -33 Fundamentals Every Javascript Developer Should Know and you can read it here.
I thought it is great concepts to know although it is not a requirement. So i decided to learn and explain these concepts one by one.

#9. Callback Queue and Event Loop

setTimeout(() => console.log(‘hello’), 0);console.log(‘world’);

If you execute this code, the result will be like below.

If you didn’t predict the result, this post might be helpful to you.

JavaScript runtime in browser

We can think JavaScript runtime as a big container that includes all the things that we need in order to use JavaScript. JavaScript engine, WEB APIs and callback queue are the main elements that are included to JavaScript runtime.

JS Runtime in browser

Javascript Engine

A JavaScript engine is a computer program that execute JavaScript code and consist of callstack and memory heap.

WEB APIs

WEB APIs are everything related to the DOM, Timers like SetTimeout, Fetch API and even the console.log that we use all the time.
WEB APIs are functionalities provided to the engine but which are actually not part of the JavaScript language itself.

Callback queue

This is the data structure that contains all the callback functions that are ready to be executed

With this basic knowledge, let’t go back to our first code example.

step 1

As soon as the code is executed, console.log(‘world’) is placed in the callstack. However console.log(‘hello’) is placed in the WEB APIs since setTimout is a function that WEB APIs support. And then, because i set the timer to 0 second, it is immediately moved to callback queue

Note that the 0 millisecond (second argument of setTimeout function ) doesn’t mean it will be executed after 0 millisecond, but, it means that it will be moved to callbackqueue after 0 millisecond.

step 2

After step 1 ‘world’ is logged on the console and immediately removed from callstack. Since callback queue should wait until callstack is empty, it can’t be executed first. This is why world is logged before hello is logged on the console.

step 3

Finally when the call stack is empty, the callback function is passed to the stack so that it can be executed. And this happen by something called the event loop. So basically the event loop takes callback functions from the callback queue and puts them in the callstack so that they can be executed.

final result

Conclusion

Today we learned about callback queue and event loop. I think understanding what is happening under the hood will be great fundamentals for your JavaScript skill.
Thank you for reading and hope this might be helpful to you!!!

reference : video

--

--

DH KIM
DH KIM

No responses yet