PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Как заблокировать поток в JS?

Основы языка

Поток в JS блокируется любой тяжёлой синхронной операцией: длинным циклом, тяжёлыми вычислениями или синхронными блокирующими API (`alert`, синхронный XHR). Это замораживает UI.

Как заблокировать поток

Тяжёлый цикл

for (let i = 0; i < 1e10; i++) {} // блокирует поток надолго

Активное ожидание (busy-wait)

const end = Date.now() + 3000;
while (Date.now() < end) {} // блок на 3 секунды

Синхронные блокирующие API

alert('текст');       // блокирует до закрытия
prompt('вопрос');     // блокирует до ответа
// синхронный XMLHttpRequest (устарел)

Тяжёлая обработка данных

Огромные вычисления, синхронная обработка больших массивов, глубокая рекурсия.

Что происходит при блокировке

JS однопоточный — пока стек занят синхронной операцией:

  • Event Loop не обрабатывает задачи.
  • Браузер не отрисовывает.
  • UI не реагирует на клики, анимации замирают («страница зависла»).

Зачем это знать

Блокировка — источник плохого UX. Её избегают: асинхронные операции не блокируют, тяжёлые вычисления выносят в Web Workers, работу разбивают на части.

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

Поток в JS блокирует любая тяжёлая синхронная операция: длинный/busy-wait цикл, тяжёлые вычисления, глубокая рекурсия, синхронные API (alert, prompt, синхронный XHR). Пока стек занят, Event Loop не работает и UI замерзает (однопоточность). Блокировки избегают — асинхронность, Web Workers, разбиение работы.

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