Sprendimas: „setInterval“ negali veikti įprastai naršyklės fone.

Nuoroda

Worker

Kas yra „Web Worker“

„Žiniatinklio darbuotojas“ suteikia paprastą būdą, kaip žiniatinklio turinys paleisti scenarijus foninėje gijoje. Siūlai gali atlikti užduotis netrikdydami vartotojo sąsajos. Be to, jie gali atlikti įvestį / išvestį naudodami „XMLHttpRequest“. Sukūręs darbuotojas gali išsiųsti pranešimą jį sukūrusiam „JavaScript“ kodui, paskelbdamas pranešimą kodo nurodytam įvykių tvarkytojui (ir atvirkščiai).

Nurodymai

Žemiau pateiktame pavyzdiniame kode įdiegiame paprasčiausią laikmatį ir leidžiame jam suveikti kas 100 milisekundžių.

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

Standartinis naudojimas

Ankstesniame pavyzdyje mes sukūrėme adresą naudodami createObjectURL. Kadangi kodas, kurį turime vykdyti, yra gana paprastas, šis metodas bus glaustesnis. Kai užduoties, kurią turime atlikti, kodas yra sudėtingesnis, užduotį galime parašyti atskirai kaip nepriklausomą js failą. Išsamesnės informacijos ieškokite šiame kode. Yra išsamesnių įvadų, galite kreiptis į informacinę medžiagą straipsnio viršuje.

            var timmer = new Worker('worker.js');