Уже многие говорили о работе Javascript eventloop, но наиболее полно я смог понять работу модели параллелизма в следующем примере:
- Сначала мы получаем время запуска таймера.
- Затем создается промис, где функция разрешения будет setTimeOut с таймером на 100 секунд (100000). После этого, когда таймер сработал, обработчик получает время работы таймера.
- Затем объявляется переменная, в нее записывается время начала цикла.
- Затем он выполняет цикл и присваивает количество итераций 1e10 (10 000 000 000).
- И на финише получаем время работы цикла.
Вывод показывает, что setTimeOut не дождался выполнения цикла. В противном случае время выполнения цикла было бы больше 120 000 миллисекунд. Эта реализация достигнута из-за того, что стек вызовов не был заблокирован, а обработка setTimeOut продолжалась в веб-API.