Ҳал: setInterval наметавонад дар заминаи браузер муқаррарӣ кор кунад.

Маълумотнома

Worker

"Веб коргар" чист

"Web Worker" роҳи соддаи пешбурди скриптҳоро дар риштаи замина пешниҳод менамояд. Риштаҳо метавонанд вазифаҳоро бе вайрон кардани интерфейси корбар иҷро кунанд. Ғайр аз он, онҳо метавонанд I / O -ро бо истифодаи XMLHttpRequest иҷро кунанд. Пас аз эҷод, коргар метавонад тавассути фиристодани паём ба коркарди рӯйдодҳое, ки бо рамз пешбинӣ шудаанд (ва баръакс) ба коди JavaScript, ки онро эҷод кардааст, паём фиристад.

Дастурҳо

Дар намунаи коди дар поён овардашуда мо соддатарин вақтсанҷро амалӣ мекунем ва иҷозат медиҳем, ки он дар ҳар 100 миллисекунд ба амал ояд.

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

Истифодаи стандартӣ

Дар мисоли боло, мо бо истифода аз createObjectURL суроға сохтем.Азбаски коди мо бояд иҷрошаванда нисбатан содда бошад, ин усул кӯтоҳтар хоҳад буд. Вақте ки рамзи супорише, ки мо бояд иҷро кунем, мураккабтар аст, мо метавонем супоришро ҳамчун файли мустақили js алоҳида нависем. Барои тафсилот, лутфан ба рамзи зерин муроҷиат кунед. Муқаддимаҳо муфассалтар ҳастанд, шумо метавонед ба маводҳои истинод дар қисми болоии мақола муроҷиат кунед.

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