Видео
синхронность в JavaScript связана с тем, что JavaScript - это однопоточный язык программирования. Это означает, что в один момент времени может выполняться только одна операция. Однако JavaScript предоставляет механизмы для выполнения асинхронных операций, таких как обработка событий, AJAX-запросы, таймеры и т.д.
Event Loop (Событийный цикл)
Event Loop - это механизм, который управляет асинхронностью в JavaScript. Он отвечает за выполнение кода, обработку событий и управление очередью задач.
Основные компоненты Event Loop:
Call Stack (Стек вызовов) - хранит информацию о текущем выполняемом коде и вызываемых функциях.
Task Queue (Очередь задач) - хранит асинхронные задачи, ожидающие своей очереди на выполнение.
Microtask Queue (Микрозадачи) - хранит микрозадачи, такие как Promise.then(), Promise.resolve() и т.д.
Алгоритм работы Event Loop:
Выполняется синхронный код в Call Stack.
Если в Call Stack нет задач, Event Loop проверяет Microtask Queue и выполняет все микрозадачи.
После выполнения микрозадач, Event Loop проверяет Task Queue и выполняет первую задачу в очереди.
Процесс повторяется.
setTimeout(callback, 0)
Когда вы вызываете setTimeout(callback, 0), это не означает, что callback будет вызван немедленно. Вместо этого, callback помещается в Task Queue и будет выполнена после завершения текущего синхронного кода в Call Stack.
Видео синхронность в JavaScript связана с тем, что JavaScript - это однопоточный язык программирования. Это означает, что в один момент времени может выполняться только одна операция. Однако JavaScript предоставляет механизмы для выполнения асинхронных операций, таких как обработка событий, AJAX-запросы, таймеры и т.д.
Event Loop (Событийный цикл)
Event Loop - это механизм, который управляет асинхронностью в JavaScript. Он отвечает за выполнение кода, обработку событий и управление очередью задач.
Основные компоненты Event Loop:
Алгоритм работы Event Loop:
Когда вы вызываете setTimeout(callback, 0), это не означает, что callback будет вызван немедленно. Вместо этого, callback помещается в Task Queue и будет выполнена после завершения текущего синхронного кода в Call Stack.
Пример:
Вывод будет такой: