我的網頁上執行的CPU密集型任務很少,涉及一些計算和繪圖文本。這些任務應該在一個時間間隔(10-20毫秒)內重複。使用Web Worker延遲重複事件
考慮到我們的目標瀏覽器是支持HTML5 & Web Worker的主流瀏覽器的最新版本,我決定使用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和平板電腦的所有主流瀏覽器沒有正常工作任何問題。正如我所期望的那樣,在大約15-20毫秒的間隔內調用calculateDrawData()
函數。但在少數平板電腦和手機上,事情並不順利。我調查了一下,發現calculateDrawData()
沒有在大約15毫秒的時間間隔內被調用,並且在調用之前非常頻繁地需要70毫秒或更多時間。
我懷疑執行calculateDrawData()
函數可能需要很長時間。但經過調查發現,calculateDrawData()
只需要6-12毫秒。
我只是想知道什麼可能導致onmessage
被調用的時間間隔延遲。如何進一步調查?