Вынесите преобразование CSV в XLSX в Web Worker и передавайте результат как бинарные данные, оставляя основной поток для UI.
Сервер отдаёт CSV, а на клиенте нужно тяжело преобразовать его в XLSX, из-за чего зависает вкладка. Как сохранить обработку на клиенте, не блокируя интерфейс?
Вынесите преобразование CSV в XLSX в Web Worker и передавайте результат как бинарные данные, оставляя основной поток для UI.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Вынесите преобразование CSV в XLSX в Web Worker и передавайте результат как бинарные данные, оставляя основной поток для UI.
Worker выполняет парсинг и генерацию файла без доступа к DOM; библиотека должна поддерживать такое окружение. Для больших данных используйте чанки, прогресс, отмену и transferable ArrayBuffer, где это возможно. Worker не убирает расход памяти и время вычислений, поэтому объём входа всё равно ограничивают.