HTML Web Workers
- 上一页 HTML5 应用缓存
- 下一页 HTML5 SSE
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>