JavaScript имеет модель параллелизма, основанную на цикле событий, который отвечает за выполнение кода, сбор и обработку событий, а также выполнение поставленных в очередь подзадач. Прежде чем понять процесс, мы должны понять некоторые важные ключевые слова. Это стек вызовов, веб-API, очередь, цикл событий.

Стек вызовов:

Контексты выполнения JavaScript выполняются через механизм JavaScript. Для управления этими контекстами выполнения движок JS использует стек вызовов. Таким образом, стек вызовов JS представляет собой структуру данных, в которой хранится информация о вызываемых и выполняемых функциях.

Веб-API:

Когда механизм javascript определяет функцию как асинхронную, метод будет отправлен в веб-API. Здесь асинхронная функция ожидает разрешения кода.

Очередь обратного звонка:

Очередь обратного вызова или очередь сообщений содержит список сообщений, подлежащих обработке, и связанных с ними функций обратного вызова. Сообщения ставятся в очередь в ответ на внешние события. Он следует заказам FIFO. FIFO означает «первым пришел — первым вышел». Когда асинхронная задача будет решена, она будет отправлена ​​в очередь обратного вызова.

Цикл событий:

Цикл событий проверяет стек вызовов. Если стек вызовов пуст, то он помещает первую обработанную функцию обратного вызова, присутствующую в очереди обратного вызова.

Здесь рассмотрим движок javascript. Когда движок javascript начнет выполняться, первый console.log будет выполнен первым.

Результат вы найдете в консоли «I am Line One». Затем будет выполнена вторая строка setTimeout.

Но setTimeout — это асинхронная функция. Таким образом, он будет отправлен в часть веб-API.

Тогда движок будет работать с 3-ей консолью. И мы получим вывод «I am Line Three». В это время веб-API работает над разрешением метода setTimeout. После восстановления метода setTimeout он будет отправлен в очередь обратного вызова.

Затем событие проверяет стек вызовов. Когда стек вызовов полностью пуст, цикл событий отправляет метод setTimeout() в стек вызовов. Затем снова обратный вызов выполняет этот код.

Затем, наконец, вы получите новую строку в консоли «I am Line Two».