Встречается на собеседованиях • сегодня
Есть ли способ сделать JavaScript многопоточным
JavaScript изначально однопоточен, но есть несколько способов достичь параллелизма:
- Web Workers - позволяют запускать скрипты в фоновых потоках:
js
// main.js
const worker = new Worker('worker.js');
worker.postMessage('Hello!');
// worker.js
onmessage = (e) => {
console.log(e.data); // 'Hello!'
postMessage('World!');
};-
SharedArrayBuffer + Atomics - для разделяемой памяти между потоками (с ограничениями из-за Spectre)
-
Service Workers - для фоновых процессов, кэширования и офлайн-работы
-
WebAssembly с поддержкой потоков (через pthreads)
Основные ограничения:
- Web Workers не имеют доступа к DOM
- Общение между потоками только через postMessage
- SharedArrayBuffer требует специальных HTTP-заголовков безопасности
Для CPU-intensive задач лучше использовать Web Workers, а для UI-операций - обычный event loop.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы