Скорее всего, проблема в том, что вы используете полностью синхронный код.
DOM не обновляется до тех пор, пока не будут запущены какие-либо функциизавершены (даже если вы обновили DOM до длительного расчета).
Вот пример долгосрочного расчета, который препятствует немедленному обновлению DOM. (Нажмите кнопку «Render» вверху, чтобы увидеть пример правильно.)
Обратите внимание на пример, что текст "Starting... Wait a few seconds."
появляется немедленно и не блокируется в течение длительного временирасчет.Но текст "Updated"
занимает 3 секунды.
Причина этого в том, что я сначала добавил "Starting..."
в DOM, а затем завернул остальную часть кода в setTimeout
.Это позволило DOM немедленно обновить для "Starting..."
, но остальная часть кода в setTimeout
является синхронной , поэтому DOM не будет обновляться, пока этот код не будетзавершено.
Таким образом, ваше решение может состоять в том, чтобы обновить текст с помощью "In progress..."
, а затем обернуть оставшуюся часть кода в setTimeout()
, чтобы позволить DOM немедленно обновиться с вашим сообщением о прогрессе..
element.innerHTML = "In progress...";
setTimeout( function() {
// invoke the sorting code
}, 0);