Solució: setInterval no es pot executar normalment al fons del navegador.
Referència
WorkerQuè és "Web Worker"
"Web Worker" proporciona una manera senzilla perquè el contingut web executi scripts en un fil de fons. Els fils poden realitzar tasques sense molestar la interfície d'usuari. A més, poden realitzar E / S mitjançant XMLHttpRequest. Un cop creat, un treballador pot enviar un missatge al codi JavaScript que l’ha creat publicant el missatge al controlador d’esdeveniments especificat pel codi (i viceversa).
Instruccions
Al codi de mostra següent, implementem el temporitzador més senzill i el deixem activar cada 100 mil·lisegons.
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");
Ús estàndard
A l'exemple anterior, vam crear una adreça mitjançant createObjectURL. Com que el codi que hem d'executar és relativament senzill, aquest mètode serà més concís. Quan el codi de la tasca que hem d'executar és més complicat, podem escriure la tasca per separat com a fitxer js independent. Per obtenir més informació, consulteu el codi següent. Hi ha introduccions més detallades; podeu consultar els materials de referència a la part superior de l'article.
var timmer = new Worker('worker.js');