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("./thead.js"); thead.onmessage = function(event){ console.log("new:"+event.data); console.log("old:"+ary); };
thead.postMessage(ary); </script> </body> </html>
|
index.html
1 2 3 4 5
| onmessage = function(event){ if(typeof event.data ==="object") 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);
close();
setTimeout(func,num); clearTimeout(num); setInterVal(func,num); clearInterVal(num);
Worker
XMLHttpRequest
onmessage
importScripts(url1,url2....);
|
Worker的物件成員:
1 2 3 4 5 6 7 8
| postMessage(msg);
onerror
onMessage
terminate()
|