Встречается на собеседованиях • сегодня
Можно ли выносить тяжелые макрозадачи, чтобы не блокировать основной поток
Да, можно выносить тяжелые макрозадачи из основного потока, используя 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`.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы