Sobes.tech
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('Конец');

Вывод будет:

Начало
Конец
Асинхронный вызов

Поток не блокируется ожиданием таймера.