Решение: setInterval не може да работи нормално во позадината на прелистувачот.

Референца

Worker

Што е „веб-работник“

„Веб работник“ обезбедува едноставен начин за веб-содржина да извршува скрипти во нишка во позадина. Темите можат да извршуваат задачи без нарушување на корисничкиот интерфејс. Покрај тоа, тие можат да извршат I / O користејќи XMLHttpRequest. Откако ќе се создаде, работникот може да испрати порака до кодот JavaScript што го создал, со објавување на пораката до управувачот на настани наведен со кодот (и обратно).

Инструкции

Во примерокот со кодот подолу, го спроведуваме наједноставниот тајмер и оставаме да активира на секои 100 милисекунди.

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

Стандардна употреба

Во горенаведениот пример, креиравме адреса користејќи createObjectURL. Бидејќи кодот што треба да го извршиме е релативно едноставен, овој метод ќе биде поконцизен. Кога кодот во задачата што треба да ја извршиме е покомплициран, можеме да ја напишеме задачата одделно како независна js-датотека. За детали, погледнете го следниот код. Постојат подетални воведи, можете да се повикате на референтните материјали на горниот дел од статијата.

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