Про цикл событий в js. Кратко.


Я продолжаю изучать js (вроде как параллельно с golang). Так вот на github есть книга, Node Hero на русском. Там есть много полезной информации и ссылка на видео длительностью в 30 минут. В котором очень подробно объясняется внутренняя работа js. Я посмотрел это видео и вот краткое описание того, как я его понял.

Цикл событий перебрасывает содержимое из очереди задач в стек выполнения. Стек это место где хранятся все функции программы до выполнения. Оттуда они берутся и выполняются по очереди. Однако, кроме стека выполнения существует такая вещь как WebAPI или c++ компилятор в nodejs. Это дополнительная среда выполнения не зависящая от стека. Там функции api выполняются и результат отправляется в очередь задач. Когда стек очищается, из очереди задач берутся функции, отправляются в цикл событий и оттуда по одной в пустой стек на выполнение.

setTimeout(function (){

console.log("Таймаут");

}, 30);

Так например функция setTimeout использует функцию api timer для отсчета времени, после отработки api результат console.log отправляется в стек и выполняется.

setTimeout(function(){

//Какой-то код

}, 0) // Позволяет сделать любой код асинхронным. В принципе можно обернуть в другую функцию для удобства.

P.S. Как-то очень запутано у меня все получилось. В общем вот видео https://www.youtube.com/watch?v=8cV4ZvHXQL4

P.P.S. А вообще я капитально завис с этой ассинхроностью. Как выяснилось в js есть специальный функционал для этого. Однако, я его еще не изучил.


Comments 0


My pageSettingsLogout
Cancel Confirm
100%
Cancel Confirm
Cancel Confirm