#простымисловами: Что такое Web Worker
Web Worker — это способ запустить тяжёлую задачу в браузере в фоновом потоке, не тормозя интерфейс.
Зачем он нужен
В браузере весь ваш JavaScript обычно работает в одном потоке — основном.
И если вы запускаете что-то тяжёлое (например, сложные вычисления или работу с большими данными), страдает весь интерфейс: кнопки не нажимаются, анимации замирают, скролл лагает.
Чтобы избежать этого, тяжёлую работу можно вынести в Web Worker. Тогда основная страница продолжит работать плавно.
Как это работает
Вы создаёте отдельный файл со скриптом, который будет работать в фоне:
А в основном коде:
Всё общение — через
Что можно и нельзя делать в Web Worker:
— Нельзя напрямую работать с DOM (document, window, элементы страницы).
— Нельзя использовать
Зато можно делать:
— Математические расчёты.
— Обработку больших массивов.
— Парсинг JSON, XML.
— Декомпрессию данных.
— Обмен сообщениями с сервером (через fetch, WebSocket).
#webworker #фронтенд
Web Worker — это способ запустить тяжёлую задачу в браузере в фоновом потоке, не тормозя интерфейс.
Зачем он нужен
В браузере весь ваш JavaScript обычно работает в одном потоке — основном.
И если вы запускаете что-то тяжёлое (например, сложные вычисления или работу с большими данными), страдает весь интерфейс: кнопки не нажимаются, анимации замирают, скролл лагает.
Чтобы избежать этого, тяжёлую работу можно вынести в Web Worker. Тогда основная страница продолжит работать плавно.
Как это работает
Вы создаёте отдельный файл со скриптом, который будет работать в фоне:
// worker.js
self.onmessage = function(event) {
const result = event.data * 2;
self.postMessage(result);
};
А в основном коде:
const worker = new Worker('worker.js');
worker.onmessage = (event) => {
console.log('Результат от воркера:', event.data);
};
worker.postMessage(21); // отправляем 21, получаем 42Всё общение — через
postMessage и onmessage. Вы как бы обмениваетесь сообщениями между потоками.Что можно и нельзя делать в Web Worker:
— Нельзя напрямую работать с DOM (document, window, элементы страницы).
— Нельзя использовать
alert, prompt, confirm.Зато можно делать:
— Математические расчёты.
— Обработку больших массивов.
— Парсинг JSON, XML.
— Декомпрессию данных.
— Обмен сообщениями с сервером (через fetch, WebSocket).
#webworker #фронтенд
👍22❤6