HTML5 ? ???
Web Workers
?????? JavaScript? ?????? ? ?? ??? ???? ?? html5 ??? ? ?? ??? ??????. ??? ??? ?? ???? ?????. ??? ??? ? ???? ???? ??? ??? ?? ???? ? ??? ?? ??? ???? ? ????. ??? ??? ?? ????? ???? ?? ???? ??? ? ????
??? ????? JavaScript ??? ??? js ??? ?? ?? ????? Worker ???? ???? ???? ???? ???. ???? ???? ?? ??? ??. Worker ???? ???? ?? ??? ????? ??? ???? ?? ?? ??? ?? ??? ??(???? + ??? + ??)? ???? ???. ? ????? ???? ??? ???? ?? ???? ??? ??? ??? ????.
var Worker=new Worker('js/worker.js');
??? ?? ?
n?? ?? ? ?? 0?? 10000??? ?? ??? ???? ?????. ?? ??? ? ? ???? ??? ?? i*n? ????? ????. ??>
index.html<!DOCTYPE html> <html> <head> <title>Web Workers</title> </head> <body> <h1>Web Workers</h1> <div id="test" style="width:500px;"></div> <script type="text/javascript"> var worker=new Worker('js/worker.js'); worker.postMessage({ n:69 }); worker.onmessage=function(e){ var test=document.getElementById('test').innerHTML=e.data; }; </script> </body> </html>/js/worker.js
function calc(n){ var result=[]; for(var i=1;i<10000;i++){ var tem=i; if(i%n==0){ if(i%(10*n)==0){ tem+='<br/>'; } result.push(tem); } } self.postMessage(result.join(' ')); self.close(); } onmessage=function(e){ calc(e.data.n); };?? ??:
var i=0;
function timedCount()
{
i=i+1;
postMessage(i);
setTimeout("timedCount()",500);
}
timedCount();
? ??? ?? ???
?? ? ??? ??? ???? ?? HTML ????? ???? ???.?? ??? ???? ????? ??? ?????. ??? ?? ?? ? ? ??? ??? ??? ?? "demo_workers.js"?? ??? ?????.
if(typeof (w) =="???? ??")
{
w=new Worker("demo_workers.js");
}
?? ?? ? ????? ???? ???? ?????. .
? ???? "onmessage" ??? ???? ?????.
w.onmessage=function(event){
document.getElementById("result").innerHTML= event.data;
};
<p web="" Worker=""? ???? ???? ??? ???? ??? ?????. event.data=""?? ="" event.data=""? ???? ???? ????.
Web Worker ??
Web Worker ??? ???? ???? ???? ?????(?? ????? ??? ???). ??? ???.
? ???? ???? ????/??? ???? ????? quit() ???? ??????:
w.terminate();