Показать сообщение отдельно
  #1 (permalink)  
Старый 24.06.2024, 12:34
Новичок на форуме
Отправить личное сообщение для HuXT Посмотреть профиль Найти все сообщения от HuXT
 
Регистрация: 24.06.2024
Сообщений: 2

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

что привело к необъяснимому поведению: первый запуск всегда приводит к рестарту страницы. то есть нажимаем загрузить csv, далее загрузить пдф и страница тут же возвращается в исходное положение. даже если поставить большой таймаут - он просто игнорится. все последующие разы всё работает как и ожидается.
Ответить с цитированием