PassFront
  1. PassFront
  2. База знаний
  3. Асинхронность и Event Loop

В чем разница между синхронным кодом с циклом while и асинхронным кодом?

Асинхронность и Event Loop

Синхронный цикл `while` блокирует поток на всё время выполнения, а асинхронный код запускает операцию и освобождает поток, обрабатывая результат позже через Event Loop.

Синхронный while

Выполняется целиком в call stack, блокируя поток — ничего другого не происходит, пока цикл не завершится:

while (condition) {
  heavyWork(); // поток занят, UI "замерзает"
}
console.log('после'); // только после завершения цикла

Интерфейс не реагирует на клики, не анимируется во время цикла.

Асинхронный код

Запускает операцию (сеть, таймер) вне потока и продолжает работу; результат обрабатывается позже:

fetch(url).then(handle); // поток свободен
console.log('после');    // выполнится сразу, не дожидаясь ответа

Поток не блокируется, UI отзывчив.

Различия

  • Блокировка: while блокирует поток; асинхронный код — нет.
  • Порядок: синхронный код по порядку; асинхронный — коллбэки позже (через очереди).
  • UI: тяжёлый while замораживает интерфейс; асинхронность сохраняет отзывчивость.

Нюансы

Асинхронность не делает вычисления параллельными — она про ожидание (I/O). Тяжёлые вычисления в цикле блокируют даже «асинхронный» код (они синхронны). Для них — Web Workers.

Коротко для собеседования

Синхронный while блокирует единственный поток на всё время — UI замерзает. Асинхронный код запускает операцию и освобождает поток, обрабатывая результат позже через Event Loop — UI отзывчив. Асинхронность про ожидание I/O, а не про параллельные вычисления (для них — Web Workers).

Другие вопросы раздела