我有一個處理某種渲染(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