javascript - GIF动画在所有主流浏览器中都和javascript运行在同一个线程上是真的吗?

标签 javascript ajax animated-gif

我展示了一个动画 GIF,它在我的 AJAX 请求正在进行时运行,并在我的脚本处理完响应后停止。

虽然这有效,但我注意到当我的脚本(其中包含一些相当大的 DOM 更新)处理请求的响应时,动画会卡住。

我的研究使我相信这是因为 GIF 动画发生在运行 javascript 的同一线程上 - 浏览器是真正的单线程。这是当前所有主流浏览器(例如 Chrome、Firefox、Safari、IE)的正确解释吗?

其次,为什么要这样做?浏览器真的不可能将一个线程专用于 GIF 动画,以便在执行一段 javascript 时它们不会卡住吗?

更新

This是一个有趣的页面。它讨论了使用纯 CSS3 动画。他们仍然在 Firefox 中卡住 - 也许很快 FF 会解决这个问题。看来我应该考虑将 CSS 用于动画而不是使用 GIF。

最佳答案

我想问题是(恕我直言)当您更新 dom 时,浏览器不会重新绘制页面,因此图像会卡住。

尝试在不改变 dom 的情况下做一些繁重的事情,gif 应该动画(如果你的 cpu 很忙,速度会很慢)但不要卡住。

如果它仍然卡住,您可以明确地为该工作创建一个新线程(使用 webworker),但如果我没记错的话,您不能从 webworker 更改 dom。

关于javascript - GIF动画在所有主流浏览器中都和javascript运行在同一个线程上是真的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16927983/

相关文章:

jquery - 将图像从 Jquery .animate 图像转换为动画 GIF?

android - 使用库显示 Gif 图像

javascript - JavaScript 中的数组乘法

javascript - 当选项和 c :out is used 时,从 JSP/JSTL 中的下拉列表中获取值

javascript - 替换 Javascript 中的反斜杠

javascript - socket.io 服务器,处理函数

jquery - 使用 AJAX 的 Django CreateView

javascript - 使用 window.open(url ,"_self") 打开下载窗口,但不打开 GET 请求

javascript - 如何在 Ember 中以 POST 请求发送文件?现在只发送文件名

WPF 动画 GIF 使用过多内存来显示大 GIF 图像