我有一个处理某种渲染(webgl)的长时间运行的JavaScript代码。 这是一种“自适应渲染”,其中我随着时间的推移越来越精确地计算表面(意味着场景的“分辨率”变得越来越精确)。如何在运行长javascript代码时处理用户输入事件?
只要用户不按下按键或移动鼠标,我就会让它运行。 正如here所述,我可以使用setTimeout或setInterval,给JavaScript一些时间来处理其他事件。
我测试过的setTimeout和setInterval延误这一jsFiddle,我观察到以下结果:
setTimeout delay: 15-20 ms
setInterval delay: 2-4 ms
它速度快,但仍然相当困难在我的情况使用。我需要能够做出反应,完成一些计算并呈现在16毫秒给用户的印象运行在60 fps。
所以这里的问题(S):
1)有一些其他(更聪明)的方式来检查是否有要处理一些呼入用户输入事件?
2)还有什么我可以用来做一些“长期运行的代码可由用户中断”? (也许网络工作者?)
网络工作者当然可以在这里帮助你,当然他们只能在更新的浏览器上工作... – 2013-03-08 00:52:02