Rešitev: setInterval ne more normalno delovati v ozadju brskalnika.
Referenca
WorkerKaj je "spletni delavec"
"Web Worker" spletnim vsebinam omogoča preprost način izvajanja skriptov v niti v ozadju. Niti lahko izvajajo naloge, ne da bi motili uporabniški vmesnik. Poleg tega lahko izvajajo V / I z uporabo XMLHttpRequest. Ko je delavec ustvarjen, lahko pošlje sporočilo kodi JavaScript, ki ga je ustvarila, tako da sporočilo pošlje v obdelovalec dogodkov, ki ga določa koda (in obratno).
Navodila
V spodnji vzorčni kodi izvajamo najpreprostejši časovnik in pustimo, da se sproži vsakih 100 milisekund.
var timmer = new Worker(
URL.createObjectURL(
new Blob(
[
"onmessage=function(event){setInterval(function(){postMessage(1);},100)}",
],
{ type: "application/javascript" }
)
)
);
timmer.onmessage = function (event) {
console.log("get message");
};
timmer.postMessage("start");
Standardna uporaba
V zgornjem primeru smo ustvarili naslov z uporabo createObjectURL. Ker je koda, ki jo moramo izvršiti, razmeroma preprosta, bo ta metoda bolj jedrnata. Kadar je koda v nalogi, ki jo moramo izvršiti, bolj zapletena, lahko nalogo napišemo ločeno kot neodvisno datoteko js. Za podrobnosti glejte naslednjo kodo. Obstajajo podrobnejši uvodi, sklic na referenčne materiale lahko najdete na vrhu članka.
var timmer = new Worker('worker.js');