Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
labuda
6 лет назад

Про цикл событий в 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 есть специальный функционал для этого. Однако, я его еще не изучил.

14
0.017 GOLOS
На Golos с February 2017
Комментарии (0)
Сортировать по:
Сначала старые