HTML Web Workers

Web worker ni JavaScript iliyotumika kwenye mabaki, bila kuzungumza na mafunzo mengine, hawakubali kufikiria umeme wa sayari ya wavuti.

Je, ni nini Web Worker?

Mwaka wa HTML kwenye mabaki inaonekana kwamba haujawazi, hadi script imekombolewa.

Web worker ni JavaScript iliyotumika kwenye mabaki, bila kuzungumza na mafunzo mengine, hawakubali kufikiria umeme wa sayari ya wavuti. Unaweza kuendelea kufanya kazi yako: kichukio, kuchagua matukio mengine, na wakati huo Web worker iko kwenye mabaki ya hivi karibuni.

Makampuni ya Browser

Inafaa za orodha inaonyesha sababu za kinaonesha Web Worker zaidi ya sababu za kinaonesha kwa browseri za kwanza.

API
Web Worker 4.0 10.0 3.5 4.0 11.5

Mifano wa Web Workers wa HTML

Mifano inayotengeneza Web Worker muhimu kwenye mabaki, kwenye mabaki ya hivi karibuni:

Tilisiko:

Jifunze Kwa Kupendelea

Tafuta Ukubali wa Web Worker

Kufuatilia kufanya kwenda Web Worker, tafuta kama kinaonesha mtumishi wa mifunzo kwa Web Worker:

if (typeof(Worker) !== "undefined") {
    // Ndio! Inasaa Web Worker!
    // Mafuta yasi...!
}
    // Maafu! Hatukubali Web Worker!
}

Kuunda Mwizi wa Web Worker

现在,让我们在一个外部 JavaScript 文件中创建我们的 web worker。

在此处,我们创建了计数脚本。该脚本存储于 "demo_workers.js" 文件中:

var i = 0;
function timedCount() {
    i = i + 1;
    postMessage(i);
    setTimeout("timedCount()",500);
}
timedCount();

以上代码中重要的部分是 postMessage() 方法 - 它用于向 HTML 页面传回一段消息。

注释: web worker 通常不用于如此简单的脚本,而是用于更耗费 CPU 资源的任务。

创建 Web Worker 对象

现在我们已经有了 web worker 文件,我们需要从 HTML 页面调用它。

下面的代码行检测是否存在 worker,如果不存在,- 它会创建一个新的 web worker 对象,然后运行 "demo_workers.js" 中的代码:

if (typeof(w) == "undefined") {
    w = new Worker("demo_workers.js");
}

Kisha tunaweza kutumia na kusoma ujumbe kutoka kwa web worker.

Ongeza kipindi cha kusikia hatua "onmessage" kwa web worker:

w.onmessage = function(event){
    document.getElementById("result").innerHTML = event.data;
};

Kama web worker anatoa ujumbe, itakaa kufanya kipindi cha kusikia hatua (ingawa kipindi cha nje cha msimbo kimekomishwa) hadi itakaa kumaliza.

Kumaliza Web Worker

Baada ya kumwita web worker, itakaa kusikia ujumbe (ingawa kipindi cha nje cha msimbo kimekomishwa) hadi itakaa kumaliza.

Kumaliza web worker na kupatikiza resha za kiburi/kompyuta, tumia mtu wa kumaliza:

w.terminate();

Kutumia Web Worker kwa uwanja wa kina

Ikiwa unapokea muwakilishi wa worker kama undefined, baada ya kumaliza, unaweza kutumia kipindi hiki tena:

w = undefined;

Mfano wa Web Worker kamili

Tunauona kipindi cha .js kwa maudhui ya wakoroga. Hapa ni kipindi cha HTML:

Mfano

<!DOCTYPE html>
<html>
<body>
<p>Hitija namba: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button> 
<button onclick="stopWorker()">Stop Worker</button>
<br><br>
<script>
var w;
function startWorker() {
    if(typeof(Worker) !== "undefined") {
        if(typeof(w) == "undefined") {
            w = new Worker("demo_workers.js");
        }
        w.onmessage = function(event) {
            document.getElementById("result").innerHTML = event.data;
        };
    }
        document.getElementById("result").innerHTML = "Sorry! No Web Worker support.";
    }
}
function stopWorker() { 
    w.terminate();
    w = undefined;
}
</script>
</body>
</html>

Jifunze Kwa Kupendelea

Web Worker na DOM

Kwa sababu wa Kifaa cha Web Worker inaenea kwenye faili nyingine, haikubaliwe kufikia kifaa cha taarifa cha JavaScript hivi:

  • Mfano wa Kifaa cha Window
  • Mfano wa Kifaa cha Document
  • Mfano wa Kifaa cha Parent