Javascript Worker

Worker是javascript的thead,只有在支援html5的brower才提供,目前支援最完整的是firefox,firefox可以在Worker理面在使用Worker。Worker目前只提供簡單的傳值、物件、陣列,並沒辦法傳遞function,其中要特別注意的是object,當Worker接收到的是一個object,會與原先的object屬於不同記憶體位址

example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
</head>
<body>
<script>
var ary = [2,3,4];
var thead = new Worker(&quot;./thead.js&quot;);
thead.onmessage = function(event){
console.log(&quot;new:&quot;+event.data);
console.log(&quot;old:&quot;+ary);
};

thead.postMessage(ary);
</script>

</body>
</html>
index.html

1
2
3
4
5
onmessage = function(event){                                                                                                                         
if(typeof event.data ===&quot;object&quot;)
event.data.push(5);
postMessage(event.data);
};


thead.js
result:
new:2,3,4,5

old:2,3,4

 
Worker的Global成員(指的是上方範例的thead.js):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//寄送訊息
postMessage(msg);
//關閉thead
close();
//與時間有關的
setTimeout(func,num);
clearTimeout(num);
setInterVal(func,num);
clearInterVal(num);
//目前只有firefox有提供
Worker
//
XMLHttpRequest
//接收訊息的event
onmessage
//引用其他程式
importScripts(url1,url2....);
Worker的物件成員:
1
2
3
4
5
6
7
8
//寄送訊息
postMessage(msg);
//event
onerror
//接收訊息的event
onMessage
//立即關閉thread
terminate()