我有一个长时间运行的 javascript 代码来处理某种渲染(webgl)。这是某种“自适应渲染”,我会随着时间的推移越来越精确地计算表面(这意味着场景的“分辨率”变得越来越精确)。
只要用户不按键或移动鼠标,我希望它运行。如此处所述,我可以使用 setTimeout 或 setInterval,给 javascript 一些时间来处理其他事件。
我已经在这个jsFiddle上测试了 setTimeout 和 setInterval 延迟,我观察到以下结果:
setTimeout delay: 15-20 ms
setInterval delay: 2-4 ms
它很快,但在我的情况下仍然很难使用。我需要能够做出反应,完成一些计算并在16 毫秒内渲染,以给用户以60 fps运行的印象。
所以这里的问题(S):
1)是否有其他(更聪明的)方法来检查是否有一些传入的用户输入事件需要处理?
2)还有什么我可以用来制作“用户可中断的长时间运行代码”的东西吗?(也许是网络工作者?)