Браузеры обычно не обновляют изображения во время выполнения кода JavaScript. Если вам нужно, чтобы вращатель продолжал анимацию во время заполнения DOM, ваша функция заполнения должна будет несколько раз в секунду возвращать браузеру контроль, чтобы он мог обновить изображение, обычно путем установки времени ожидания (без задержки или очень короткого времени). задержка), которая вызывает процесс заполнения, а затем возвращается.
К сожалению, это, как правило, значительно усложнит вашу работу с населением, поскольку вы должны отслеживать, насколько далеко вы продвинулись в процессе заполнения, в переменных, а не полагаться на циклы и условные структуры, чтобы запомнить, где вы находитесь. Кроме того, он будет работать немного медленнее, в зависимости от того, как вы заполняете структуры страниц, и если есть щелчки или другие события, которые ваше приложение может доставить на полпути через заполнение, вы можете столкнуться с неприятными условиями гонки.
IMO, вероятно, было бы лучше остановить счетчик и , а затем обновить DOM. Вы по-прежнему получите паузу, но без остановки вертушки это будет не так заметно. Чтобы дать браузеру возможность обновлять счетчик после того, как ajaxStop
изменил его src
, используйте нулевое время задержки с задержкой в функции обратного вызова AJAX, чтобы по завершении браузер получал возможность отобразить измененный счетчик до того, как вдаваясь в длинный код населения.
Делать этот шаг населения быстрее, безусловно, стоит, если немного другая тема. (Добавление большого количества элементов DOM один за другим по своей сути медленное, так как каждая операция должна тратить больше времени на операции со списками. Присоединение большого количества элементов DOM одновременно через DocumentFragment выполняется быстро, но получение всех этих элементов DOM во фрагмент первое место может и не быть. Анализ всего innerHTML
за один раз, как правило, быстрый, но генерация HTML без дыр в безопасности инъекций раздражает, сериализация и повторный анализ с помощью innerHTML+=
медленнее и абсолютно ужасны. IE / HTML5 insertAdjacentHTML
быстрый, но нуждается в резервной реализации для многих браузеров: идеально быстрая манипуляция Range, откат к медленным вызовам DOM от узла к узлу для браузеров без Range. Не ожидайте, что jQuery append
сделает это за вас; столь же медленный, как и операции DOM от узла к узлу, потому что это именно то, что он делает.)