ある種のレンダリング(webgl)を処理する長時間実行されているjavascriptコードがあります。これはある種の「アダプティブレンダリング」であり、時間の経過とともにサーフェスをより正確に計算します(つまり、シーンの「解像度」がますます正確になります)。
ユーザーがキーを押さない限り、またはマウスを動かさない限り、実行したいと思います。ここで述べたように、私はsetTimeoutまたはsetIntervalを使用して、他のイベントを処理するためにjavascriptに時間を与えることができます。
このjsFiddleでsetTimeoutおよびsetInterval遅延をテストしたところ、次の結果が観察されました。
setTimeout delay: 15-20 ms
setInterval delay: 2-4 ms
それは速いですが、それでも私の状況ではかなり使いにくいです。ユーザーに60fpsで実行する印象を与えるには、反応し、いくつかの計算を完了し、 16ミリ秒でレンダリングできる必要があります。
だからここに質問があります:
1)処理する着信ユーザー入力イベントがあるかどうかを確認する他の(より賢い)方法はありますか?
2)「長時間実行されるコードをユーザーが中断できるようにする」ために使用できるものは他にありますか?(多分ウェブワーカー?)