Megoldás: A setInterval nem futtatható normálisan a böngésző hátterében.
Referencia
WorkerMi a "Web Worker"
A "Web Worker" egyszerű módot kínál a webtartalom számára a szkriptek futtatására egy háttérszálban. A szálak a felhasználói felület megzavarása nélkül végezhetnek feladatokat. Ezenkívül I / O-t is elvégezhetnek az XMLHttpRequest használatával. A létrehozás után a munkavállaló üzenetet küldhet a létrehozó JavaScript-kódnak azáltal, hogy az üzenetet elküldi a kód által meghatározott eseménykezelőnek (és fordítva).
Utasítás
Az alábbi mintakódban a legegyszerűbb időzítőt valósítjuk meg, és hagyjuk, hogy minden 100 milliszekundumban aktiválódjon.
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");
Normál használat
A fenti példában létrehoztunk egy címet a createObjectURL használatával. Mivel a végrehajtandó kód viszonylag egyszerű, ez a módszer tömörebb lesz. Ha a végrehajtandó feladat kódja bonyolultabb, akkor külön írhatjuk a feladatot független js fájlként. Részletekért olvassa el a következő kódot. Vannak részletesebb bevezetések, hivatkozhat a cikk tetején található referencia anyagokra.
var timmer = new Worker('worker.js');