The event loop
JavaScript follows an event loop-basedmodel in how it works. This is very different from languages such as Java. Although modern JavaScript compilers implement a very complex and heavily optimized version of the event loop model, we can still basically understand how the event loop works.
The call stack
JavaScript is a single-threaded language. That means it can have one call stack at a given time (take one thread = one call stack). Furthermore, it implies that JavaScript cannot do more than two things at a time. Or can it?
When you call a function, you step inside that function. This function is added to the call stack. When the function returns a value, the function is popped from the call stack.
Let's take a look at this example:
const page1 = $.syncHTTP('http://example.com/page1');
const page2 = $.syncHTTP('http://example.com/page2');
const page3 = $.syncHTTP('http://example.com/page3');
const page4 = $.syncHTTP('http://example.com/page4');
console.log(page1, page2, page3...