ウェブページ上で実行されるCPU集約的なタスクはほとんどありませんが、計算やテキストの描画が含まれています。これらのタスクは、間隔(10〜20ms)で繰り返されることになっています。Webワーカーを使用したイベントの繰返しを遅らせる
私たちのターゲットブラウザがHTML5 & Webワーカーをサポートする最新の主要ブラウザであると考えて、この仕事にWeb Workerを使用することにしました。
draw_worker.js
の内容は、標準フォーマットのようなものです:
var i = 0;
function timedCount() {
i = i + 1;
postMessage(i);
setTimeout("timedCount()", 15);
}
timedCount();
労働者が使用する機能の内容は次のとおりです。
function startWorker() {
if(typeof(Worker) !== "undefined") {
if(typeof(w) == "undefined") {
w = new Worker("draw_worker.js");
}
w.onmessage = function(event) {
//Function to calculate & draw
calculateDrawData();
};
}
}
物事はPCとタブレット上のすべての主要なブラウザなしで正常に動作任意の問題。 calculateDrawData()
関数は、私が期待しているように約15〜20ミリ秒の間隔で呼び出されます。しかし、いくつかのタブレットや携帯電話では、物事はスムーズではありません。調査したところ、calculateDrawData()
は約15msの間隔で呼び出されず、非常に頻繁に呼び出される前に70ms以上かかることがわかりました。
calculateDrawData()
の実行に時間がかかる可能性があります。しかし、調査の結果、calculateDrawData()
は6〜12ミリ秒しかかかりませんでした。
私はちょうどonmessage
が呼び出されている間隔の遅延を引き起こしているのだろうかと思っています。それをさらに調査する方法は?