@MikhailNsk

"Лоадер" во время выполнения js-скрипта?

Здравствуйте!

Есть страница HTML и скрипт JS.

Делается клик по кнопке, и начинает выполняться скрипт. Скрипт выполняется достаточно долго.

В html-страницу вставлен тег "div class=loader", у него "display:none"

Вставляю в начало js-скрипта $('div.loader').show()

Но "лоадер" не показывается в браузере до полного выполнения js-скрипта.

При этом, если вставить alert() после $('div.loader').show(), то "лоадер" показывается сразу вместе с окном сообщения. Если кликнуть "ОК" в окне сообщения (alert), то "лоадер" показывается до полного выполнения js-скрипта, и закрывается (в конце поставлено $('div.loader').hide())

Как сделать так, чтобы "лоадер" показывался на время выполнения js-скрипта?

Заранее спасибо!
  • Вопрос задан
  • 761 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Выполнением JS-кода и работой с DOM занимается один и тот же поток. То есть, у браузера нет возможности обновить "лоадер" до того, как ваш скрипт будет выполнен.

Необходимо разделить отображение "лоадера" и скрипт. Например - обернуть скрипт в setTimeout. Или (что было бы уместнее, учитывая "достаточно долгое" выполнение) вынести его в web worker.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы