есть простая страница, которая на вход принимает *.csv и выдаёт *.pdf. сначала есть только кнопка загрузить файл, после загрузки-обработки появляется кнопка скачать пдф, которая запускает библиотеку makePdf и отдаёт готовый файл.
если на вход подаётся небольшой файл, то проблем нет. при увеличении размера страница выглядит подвисшей, даже алерт появляется. поэтому была добавлена промежуточная функция
function runBuildPDF() {
spinner.classList.add('spinner_shown');
button.classList.remove('download_shown');
setTimeout(() => {
buildPdf()
}, 10);
}
что привело к необъяснимому поведению: первый запуск всегда приводит к рестарту страницы. то есть нажимаем загрузить csv, далее загрузить пдф и страница тут же возвращается в исходное положение. даже если поставить большой таймаут - он просто игнорится. все последующие разы всё работает как и ожидается.