Rješenje: setInterval ne može normalno raditi u pozadini preglednika.
Referenca
WorkerŠto je "Web Worker"
"Web Worker" pruža jednostavan način za web sadržaj za pokretanje skripti u pozadini niti. Niti mogu izvršavati zadatke bez ometanja korisničkog sučelja. Osim toga, mogu izvoditi I / O pomoću XMLHttpRequest. Jednom stvoren, radnik može poslati poruku JavaScript kodu koji ga je stvorio, objavljivanjem poruke u obrađivaču događaja navedenom kodom (i obrnuto).
Upute
U donjem uzorku koda implementiramo najjednostavniji timer i pustimo ga da se aktivira svakih 100 milisekundi.
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 upotreba
U gornjem primjeru stvorili smo adresu pomoću createObjectURL. Budući da je kôd koji moramo izvršiti relativno jednostavan, ova će metoda biti sažetija. Kada je kod u zadatku koji trebamo izvršiti složeniji, zadatak možemo napisati zasebno kao neovisnu js datoteku. Pojedinosti potražite u sljedećem kodu. Postoje detaljniji uvodi, možete se pozvati na referentne materijale na vrhu članka.
var timmer = new Worker('worker.js');