Solusyon: ang setInterval dili makadagan normal sa background sa browser.

Pakisayran

Worker

Unsa ang "Web Worker"

Ang "Web Worker" naghatag usa ka yano nga paagi alang sa sulud sa web aron mapadagan ang mga script sa usa ka thread sa background. Ang mga thread mahimong maghimo sa mga buluhaton nga dili makabalda sa interface sa gumagamit. Ingon kadugangan, mahimo nila nga buhaton ang I / O gamit ang XMLHttpRequest. Kung nahimo na, ang usa ka trabahante mahimong magpadala usa ka mensahe sa JavaScript code nga naghimo niini, pinaagi sa pag-post sa mensahe sa handler sa hitabo nga gitino sa code (ug vice versa).

Panudlo

Sa sample code sa ubus, gipatuman namon ang pinakasimple nga timer ug gipaandar kini sa matag 100 milliseconds.

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

Kasagaran nga paggamit

Sa pananglitan sa taas, naghimo kami usa ka adres gamit ang createObjectURL. Tungod kay ang code nga kinahanglan namon ipatuman medyo yano, kini nga pamaagi mahimong labi ka mubu. Kung ang code sa buluhaton nga kinahanglan namon nga ipatuman labi ka komplikado, mahimo namon isulat ang buluhaton nga bulag ingon usa ka independente nga js file. Alang sa mga detalye, palihug pagdangup sa mosunud nga code. Adunay labi ka detalyado nga mga pagpaila, mahimo ka magtumong sa mga materyal nga pakisayran sa ibabaw sa artikulo.

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