Oplossing: setInterval kan niet normaal op de achtergrond van de browser worden uitgevoerd.
Referentie
WorkerWat is "Web Worker"
"Web Worker" biedt een eenvoudige manier voor webinhoud om scripts uit te voeren in een achtergrondthread. Threads kunnen taken uitvoeren zonder de gebruikersinterface te verstoren. Bovendien kunnen ze I / O uitvoeren met XMLHttpRequest. Eenmaal gemaakt, kan een werknemer een bericht sturen naar de JavaScript-code die het heeft gemaakt, door het bericht te posten naar de gebeurtenishandler die door de code wordt gespecificeerd (en vice versa).
Instructies
In de onderstaande voorbeeldcode implementeren we de eenvoudigste timer en laten we deze elke 100 milliseconden activeren.
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");
Standaard gebruik
In het bovenstaande voorbeeld hebben we een adres gemaakt met createObjectURL. Aangezien de code die we moeten uitvoeren relatief eenvoudig is, zal deze methode beknopter zijn. Als de code in de taak die we moeten uitvoeren ingewikkelder is, kunnen we de taak afzonderlijk schrijven als een onafhankelijk js-bestand. Raadpleeg de volgende code voor details. Er zijn meer gedetailleerde inleidingen, u kunt verwijzen naar de referentiematerialen bovenaan het artikel.
var timmer = new Worker('worker.js');