Верно ли, что анимация GIF работает в том же потоке, что и javascript во всех основных браузерах?

Я показываю анимированный GIF, который выполняется во время выполнения моего запроса AJAX, и останавливается после того, как мой script обработал ответ.

Пока это работает, я замечаю, что, когда ответ от запроса обрабатывается в моем script (который содержит довольно тяжелое обновление DOM), анимация замерзает.

Мои исследования заставляют меня поверить, что это связано с тем, что анимация GIF происходит в том же потоке, над которым работает javascript, - что браузер действительно однопоточный. Является ли это правильной интерпретацией для всех современных браузеров (например, Chrome, Firefox, Safari, IE)?

Во-вторых, почему так делается? Разве не возможно, чтобы браузер мог посвятить поток анимации GIF, чтобы они не замерзали, когда исполнялся блок javascript?

Обновление

Это - интересная страница. В нем говорится об использовании чистых анимаций CSS3. Они все еще замерзают в Firefox, хотя, возможно, скоро FF это исправит. Похоже, я должен рассматривать CSS для анимации, а не использовать GIF.

Ответ 1

Я полагаю, что проблема (IMHO) заключается в том, что при обновлении dom браузер не перерисовывает страницу, поэтому изображение замораживается.

Попробуйте сделать тяжелую вещь без изменения dom, gif должен оживить (медленно, если ваш процессор занят), но не заморозить.

Если он все-таки заморозится, вы можете явно создать новый поток для этой работы (используя webworker), но если я правильно помню, вы не могли бы изменить dom form webworker.

Ответ 2

Это, вероятно, хорошо известно, но CSS3 имеет собственный поток в большинстве современных браузеров. Вы должны иметь возможность установить точку останова в javascript и по-прежнему видеть свою анимацию css. Просмотрите эту ссылку, чтобы узнать, как оживить спрайт с помощью чистого css:

http://blog.teamtreehouse.com/css-sprite-sheet-animations-steps