这个问题与这位较老的, https://stackoverflow.com/questions/1209689/how-can-i-force-the-browser-to-redraw-while-my-script-is-doing-some-heavy-process但在开始对代码进行重大更改之前,我想确保我得到了正确的答案。
我正在开发一个计算密集型的 JavaScript 程序,该程序需要不断更新 HTML5 画布中的图像来绘制动画。正如现在所写,代码在紧密循环中绘制动画的所有帧,而不将控制权返回给浏览器,这意味着最终显示的只是最终帧。我很确定解决此问题的唯一方法是将动画代码分割成更小的片段,这些片段可以通过超时事件重入调用。它是否正确?或者有没有办法强制画布在某个时刻显示其内容,即使是在紧密的 JavaScript 循环中间?
我很确定解决此问题的唯一方法是将动画代码分割成更小的片段,这些片段可以通过超时事件重入调用。它是否正确?
This is正确的。
Javascript 是单线程的,因此在执行逻辑时无法发生任何其他事情。您唯一的选择是通过将逻辑拆分为要在超时时执行的微块来“模拟”线程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)