我展示了一个动画 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/