Back to questions
Лига Цифровой Экономики
Middle
2
За счёт чего в JavaScript возможна асинхронность, если JS однопоточный?
Companies where asked
Answer from AI
sobes.tech AI
JavaScript однопоточный, но асинхронность достигается благодаря механизму событийного цикла (event loop) и API браузера или среды выполнения (например, Node.js).
Когда вызывается асинхронная операция (например, setTimeout, fetch, чтение файла), она передаётся в соответствующий API, который работает вне основного потока. После завершения операции результат помещается в очередь задач (callback queue).
Event loop постоянно проверяет, свободен ли основной поток, и если да — забирает из очереди следующую задачу и выполняет её. Таким образом, асинхронные операции не блокируют основной поток, а их обработка происходит по мере готовности.
Пример:
console.log('Начало');
setTimeout(() => {
console.log('Асинхронный вызов');
}, 1000);
console.log('Конец');
Вывод будет:
Начало
Конец
Асинхронный вызов
Поток не блокируется ожиданием таймера.