Sobes.tech
Middle

¿Cómo es posible la asincronía en JavaScript si JS es de un solo hilo?

sobes.tech AI

Respuesta de la IA

JavaScript однопоточный, но асинхронность достигается благодаря механизму событийного цикла (event loop) и API браузера или среды выполнения (например, Node.js).

Когда вызывается асинхронная операция (например, setTimeout, fetch, чтение файла), она передаётся в соответствующий API, который работает вне основного потока. После завершения операции результат помещается в очередь задач (callback queue).

Event loop постоянно проверяет, свободен ли основной поток, и если да — забирает из очереди следующую задачу и выполняет её. Таким образом, асинхронные операции не блокируют основной поток, а их обработка происходит по мере готовности.

Пример:

console.log('Начало');
setTimeout(() => {
  console.log('Асинхронный вызов');
}, 1000);
console.log('Конец');

Вывод будет:

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

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