Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: web worker, optimizations

Чем отличается Web Worker от основного потока?

Этот вопрос проверяет понимание разницы между основным потоком и Web Workers в JavaScript, включая их ограничения и возможности.

Короткий ответ

Основной поток (UI thread) отвечает за выполнение JavaScript, отрисовку страницы и обработку событий. Web Worker — это фоновый поток, который может выполнять сложные вычисления, но не имеет доступа к DOM и некоторым API браузера.

Длинный ответ

Основной поток в браузере:

  • Управляет выполнением JavaScript, отрисовкой страницы (рендерингом) и обработкой пользовательских событий (клики, ввод и т. д.).

  • Если в нём выполняется долгая синхронная операция (например, цикл на миллиард итераций), интерфейс "зависнет".

Web Worker:

  • Работает в отдельном потоке, не блокируя основной.

  • Не имеет доступа к DOM, window, document и многим API (например, localStorage).

  • Общается с основным потоком через postMessage (асинхронный обмен данными).

  • Полезен для тяжёлых вычислений (например, обработка больших массивов, машинное обучение в браузере).

Пример:

// Основной поток (main.js)
const worker = new Worker('worker.js');
worker.postMessage({ data: [1, 2, 3] }); // Отправка данных
worker.onmessage = (e) => console.log('Result:', e.data); // Получение результата

// Web Worker (worker.js)
onmessage = (e) => {
  const result = e.data.data.map(x => x * 2); // Вычисления в фоне
  postMessage(result); // Отправка обратно
};

Уровень

  • Рейтинг:

    3

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#web worker

#optimizations

Подпишись на React Developer в телеграм