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

Как сделать чтобы интерфейс не зависал при обработке большого массива

Для предотвращения зависания интерфейса при обработке больших массивов используй:

  1. Web Workers - выноси тяжелые вычисления в отдельный поток:
js
// main.js
const worker = new Worker('worker.js');
worker.postMessage(largeArray);
worker.onmessage = (e) => {
  // Обновляем UI с результатами
};

// worker.js
onmessage = (e) => {
const result = processLargeArray(e.data);
postMessage(result);
};

text

2. **Разбиение на чанки** с `requestIdleCallback` или `setTimeout`:
```js
function processInChunks(array, chunkSize, callback) {
  let index = 0;
  function next() {
    const chunk = array.slice(index, index + chunkSize);
    callback(chunk);
    index += chunkSize;
    if (index < array.length) {
      setTimeout(next, 0); // Даем браузеру время на рендер
    }
  }
  next();
}
  1. Virtualization для списков - рендери только видимые элементы (React-window, React-virtualized).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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