Soluzione: setInterval non può essere eseguito normalmente sullo sfondo del browser.

Riferimento

Worker

Che cos'è "Web Worker"

"Web Worker" fornisce un modo semplice per il contenuto Web di eseguire script in un thread in background. I thread possono eseguire attività senza disturbare l'interfaccia utente. Inoltre, possono eseguire l'I / O utilizzando XMLHttpRequest. Una volta creato, un lavoratore può inviare un messaggio al codice JavaScript che lo ha creato, inviando il messaggio al gestore eventi specificato dal codice (e viceversa).

Istruzioni

Nel codice di esempio riportato di seguito, implementiamo il timer più semplice e lo lasciamo attivare ogni 100 millisecondi.

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

Utilizzo standard

Nell'esempio precedente, abbiamo creato un indirizzo utilizzando createObjectURL. Poiché il codice che dobbiamo eseguire è relativamente semplice, questo metodo sarà più conciso. Quando il codice nell'attività che dobbiamo eseguire è più complicato, possiamo scrivere l'attività separatamente come file js indipendente. Per i dettagli, fare riferimento al seguente codice. Ci sono introduzioni più dettagliate, puoi fare riferimento ai materiali di riferimento all'inizio dell'articolo.

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