Lösung: setInterval kann im Hintergrund des Browsers nicht normal ausgeführt werden.
Referenz
WorkerWas ist "Web Worker"?
"Web Worker" bietet eine einfache Möglichkeit für Webinhalte, Skripte in einem Hintergrundthread auszuführen. Threads können Aufgaben ausführen, ohne die Benutzeroberfläche zu stören. Darüber hinaus können sie E / A mit XMLHttpRequest ausführen. Nach der Erstellung kann ein Mitarbeiter eine Nachricht an den JavaScript-Code senden, der sie erstellt hat, indem er die Nachricht an den im Code angegebenen Ereignishandler sendet (und umgekehrt).
Anleitung
Im folgenden Beispielcode implementieren wir den einfachsten Timer und lassen ihn alle 100 Millisekunden auslösen.
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");
Standardgebrauch
Im obigen Beispiel haben wir mit createObjectURL eine Adresse erstellt. Da der Code, den wir ausführen müssen, relativ einfach ist, ist diese Methode präziser. Wenn der Code in der Aufgabe, die wir ausführen müssen, komplizierter ist, können wir die Aufgabe separat als unabhängige js-Datei schreiben. Einzelheiten finden Sie im folgenden Code. Es gibt detailliertere Einführungen. Sie können sich auf die Referenzmaterialien oben im Artikel beziehen.
var timmer = new Worker('worker.js');