HTML Web Workers

Web worker 是运行在后台的 JavaScript,不会影响页面的性能。

什么是 Web Worker?

当在 HTML 页面中执行脚本时,页面是不可响应的,直到脚本已完成。

Web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 运行在后台。

Inafaa ya kigeni

Inaaminika inafaa ya Web Worker inaonekana kwa sababu ya kina ya kina ya programu ya kigeni.

API
Web Worker 4.0 10.0 3.5 4.0 11.5

Mifaa ya Web Worker ya HTML

Mifaa inayotengeneza Web Worker mafaa yanaorudisha kwenye kipindi cha kidini, inakaribia:

Tambulizi:

亲自试一试

Tafuta inafaa ya Web Worker

Kabla ya kumia Web Worker, tafuta inafaa kama programu ya kigeni inasimamia Web Worker:

if (typeof(Worker) !== "undefined") {
    // Ndio! Inasimamia Web Worker!
    // Mafaa yasiyotafutikia...
} else {
    // Mungu aliyotakia! Huzungumzwa Web Worker!
}

Kapuaza kwa Web Worker mifaa

Sasa, tumezengeneza web worker wetu katika faili ya JavaScript ya nje.

Hapa, tumekanavyo kikodi cha kina cha kina. Kikodi hiki kinahifadhiwa katika faili "demo_workers.js":

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

Porti muhimu ya kikodi hiki ni methodi ya postMessage() - inatumiwa kusaidia kusoma ujumbe kutoka pae ya HTML.

Maelezo: Web worker kina kinatumika kwa kazi inayotumia mafaa ya kiburi inayofanana na kazi nyingine za kiburi, ingawa hii inatumika kwa kazi nyingi za kiburi ya kiburi.

Kumwengeneza Kina cha Web Worker

Sasa tuna kina cha web worker, tunahitaji kutumia kina hiki kutoka pae ya HTML.

Mfano wa kikodi cha siku hizi kinakulenga kumtumia kina, hali inayotumia kina kinachotumia mafaa ya kiburi/kitumiaja, kwa kufanya kazi inayotumia mafaa ya kiburi ya CPU zaidi.

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

Kisha tunaweza kutumia na kusoma ujumbe kutoka web worker.

Ongeza kina kinachosikia ujumbe "onmessage" kwa web worker:

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

Kwa kila ujumbe unavyotumia wa web worker, kikodi kwenye kina kinachosikia ujumbe kinachofanywa. Data kutoka web worker inahifadhiwa katika event.data.

Kumaliza Web Worker

Baada ya kumaliza web worker, itakaa kusikia ujumbe (ingawa script ya nje imekombolewa) hadi itakae kumaliza.

Ikiwa na uamuzi wa kumaliza web worker na kurejea mafaa ya kiburi/kitumiaji, tumia methodi ya terminate():

w.terminate();

Kutumia Web Worker Bora

Ikiwe uamuzi wa muhuri wa worker, inaweza kutumia kikodi hiki baada ya kumaliza kwa kufungua kwa kufungua:

w = undefined;

Mfano cha kikodi cha Web Worker kamilifu

Tumekanavyo kikodi cha .js. Hapa ni kikodi cha pae ya HTML:

Mfano

<!DOCTYPE html>
<html>
<body>
<p>Unafiki namba: <output id="result"></output></p>
 



亲自试一试

Web Worker 和 DOM

由于 web worker 位于外部文件中,它们无法访问下例 JavaScript 对象:

  • window 对象
  • document 对象
  • parent 对象