Вопрос проверяет знание многопоточности в браузере и альтернативных подходов к параллельным вычислениям.
Да, с помощью Web Workers. Они позволяют запускать JavaScript в фоновых потоках, но не могут изменять DOM и имеют ограниченный доступ к API браузера.
Web Workers — это механизм для выполнения кода в отдельных потоках. Они полезны для тяжёлых вычислений (например, обработка данных, математические расчёты), чтобы не блокировать основной поток.
Пример:
// main.js
const worker = new Worker("worker.js");
worker.postMessage("Start"); // Отправка сообщения воркеру
worker.onmessage = (e) => console.log(e.data); // Получение ответа
// worker.js
onmessage = (e) => {
console.log("Worker received:", e.data);
postMessage("Done"); // Отправка результата обратно
};Ограничения:
Workers не имеют доступа к document, window.
Общение между потоками происходит через postMessage (копирование данных, а не общая память).
Для более сложных сценариев можно использовать SharedArrayBuffer, но это требует осторожности из-за риска race conditions.
Таким образом, многопоточность в браузере возможна, но с ограничениями.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию