Встречается на собеседованиях • сегодня

Можно ли выносить тяжелые макрозадачи, чтобы не блокировать основной поток

Да, можно выносить тяжелые макрозадачи из основного потока, используя Web Workers. Они выполняются в отдельном потоке, не блокируя UI.

Пример:

javascript
// main.js
const worker = new Worker('worker.js');
worker.postMessage({ data: 'heavy task' });

worker.onmessage = (e) => {
console.log('Result:', e.data);
};

// worker.js
self.onmessage = (e) => {
const result = performHeavyTask(e.data); // Тяжелая логика
self.postMessage(result);
};

text

**Альтернативы:**  
- Разбивать задачу на части с `setTimeout` или `requestIdleCallback`.  
- Использовать `WebAssembly` для оптимизации вычислений.  

Осторожно: Web Workers не имеют доступа к DOM и требуют передачи данных через `postMessage`.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы