Уже многие говорили о работе Javascript eventloop, но наиболее полно я смог понять работу модели параллелизма в следующем примере:

  1. Сначала мы получаем время запуска таймера.
  2. Затем создается промис, где функция разрешения будет setTimeOut с таймером на 100 секунд (100000). После этого, когда таймер сработал, обработчик получает время работы таймера.
  3. Затем объявляется переменная, в нее записывается время начала цикла.
  4. Затем он выполняет цикл и присваивает количество итераций 1e10 (10 000 000 000).
  5. И на финише получаем время работы цикла.

Вывод показывает, что setTimeOut не дождался выполнения цикла. В противном случае время выполнения цикла было бы больше 120 000 миллисекунд. Эта реализация достигнута из-за того, что стек вызовов не был заблокирован, а обработка setTimeOut продолжалась в веб-API.