следующие работы правильно:JavaScript Порядок выполнения задачи
alert("start");
loadData(); // takes a while
alert("finished");
LoadData() представляет собой метод, который вставляет большое количество данных в таблицу в DOM и занимает несколько секунд.
Это, однако, не работает, как ожидалось:
document.getElementById("mydiv").style.display = "block";
loadData(); // takes a while
document.getElementById("mydiv").style.display = "none";
Данные загружаются в таблицу без отображения mydiv до загрузки не будет завершена, а затем mydiv быстро отображается и ушел.
Но это работает, как это предполагается: отображается
document.getElementById("mydiv").style.display = "block";
alert("start");
loadData(); // takes a while
alert("finish");
document.getElementById("mydiv").style.display = "none";
mydiv, диалоговое окно предупреждения показано, данные загружаются в таблицу, а затем mydiv исчезает, как и ожидалось.
Кто-нибудь знает, почему второй раздел кода выше не работает должным образом?
Да, loadData() - тяжелая функция. Но показывать mydiv должно быть просто, не так ли? И это также на первом месте в коде. Так почему браузер пропускает его и переходит к более сложному? Кстати, это происходит во всех основных браузерах. – stepanian
Кстати, ваше решение сработало. Я просто не знаю, почему :) – stepanian
show div получает вызов, тайм-аут устанавливается, затем завершается выполнение javascript, управление потоком возвращается в браузер так, что он может рисовать, тогда происходит событие таймаута, событие loop захватывает событие таймаута и вызывается newFunc(). – Breton