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');