Web 工作器API

Web Worker inaendelea kusababisha JavaScript kwenye msingi wa kudumu, bila kufanyia mafanikio ya kifungu cha kifungu cha Internet.

Je, nini Web Worker?

Kwenye uendeshaji wa vifungo kwenye sayari ya HTML, sayari inahatarishwa hadi vifungo iweze kumaliza.

Web Worker inaendelea kusababisha JavaScript kwenye msingi wa kudumu, bila kufanyia mafanikio ya kifungu cha kifungu cha Internet. Unaweza kuendelea kufanya kila kitu unafikia: uharibifu, kuchagua maelezo na kote, kwenye uangalifu wa web worker kwenye msingi wa kudumu.

Msaada wa Kifungu cha Kifungu cha Internet

Mayari ya tabia hii inaonyesha sababu ya kwanza ya kufaa Web Workers:

Chrome IE Firefox Safari Opera
Chrome 4 IE 10 Firefox 3.5 Safari 4 Opera 11.5
Janali ya Januari 2010 Junali ya Septemba 2012 Junali ya Juni 2009 Junali ya Juni 2009 Junali ya Juni 2011

Mfano wa Web Worker

Mfano huo huanza Web Worker msingi ambao hupendekeza hesabu kwenye msingi wa kudumu:

Mfano

Adhira:

Jifunze tena

Tafuta Web Worker Kifungu cha Kifungu cha Internet

Kufanya kila kitu kabla ya kuanzisha Web Worker, tafuta inaonesha kwa kifungu cha mtumishi wa Internet yako inaonesha Web Worker:

if (typeof(Worker) !== "undefined") {
  // Yes! Web worker support!
  // Some code.....
}
  // Mafaa! Hatukuzwa msaada wa Web Worker..
}

Kuanzisha Fafile ya Web Worker

Sasa tumezaa kumaliza Web Worker wetu kwenye JavaScript ya nje.

Hapa tunapokea mifano muhimu mmoja. Mifano hii hupatawa katika faili "demo_workers.js":

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

Porti muhimu ya makini hii ni postMessage() Makina - kutumia kusoma mifano kubaliwa kwa picha ya HTML.

Mafikira:Kawaida Web Worker haitumiwa kwa mifano ya kipindi hii, bali kwa kazi kwa CPU.

Kumaliza kina cha Web Worker

Sasa tuna faili ya Web Worker, tunanataka kutumia kwa picha ya HTML.

Makini hii ya kipindi inafikia kwa kucheckia kama worker inafikia, hata inaingia kwa kina kipya kama kina hiki hanaenda, na kusimama kwa kina cha "demo_workers.js":

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

Kisha tunaweza kuwa na ujumbe kutoka Web Worker.

Kuingia kwa Web Worker kwa "onmessage" kwa kufikiria kwa uwanja.

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

Kwa kila wakati Web Worker inafaeza ujumbe, itakuwa na haki kutumia mifano ya kusimama. Data kutoka Web Worker hupatawa katika event.data.

Kumaliza Web Worker

Kwa kila wakati Web Worker kina msingi wa uwanja, itakuwa na haki kusimama kila ujumbe (bila kumaliza kipindi cha mengineo cha nje) hadi itakataliwa.

Ikiwa unataka kumaliza Web Worker na kumaliza mifumo ya kiburi/kompyuta, tumia: terminate() Makina:

w.terminate();

Kutumia Web Worker kwa uainishaji

Ikiwa unasema variable ya worker kwa value ya undefined, bila kumaliza, unaweza kutumia makini hii:

w = undefined;

Mfano wa kipengele cha Web Worker kiliopewa kamilifu

Tumekanarudia makuniado kwa kwaingilizi katika faili .js. Hapa ni kipindi cha HTML cha picha:

Mfano

<!DOCTYPE html>
<html>
<body>
<p>Unafikia namba: <output id="result"></output></p>
<button onclick="startWorker()">Anza Makungu</button>
<button onclick="stopWorker()">Kisha Worker</button>
<script>
let w;
function startWorker() {
  if (typeof(w) == "undefined") {
    w = new Worker("demo_workers.js");
  }
  w.onmessage = function(event) {
    document.getElementById("result").innerHTML = event.data;
  };
}
function stopWorker() {
  w.terminate();
  w = undefined;
}
</script>
</body>
</html>

Jifunze tena

Web Worker na DOM

Kwa sababu Web Worker inapatikana kwenye faili nyingine, hivyo waliowezesha hawawezi kufikia muundo wa JavaScript kwanza:

  • Muundo wa window
  • Muundo wa document
  • Muundo wa parent