標籤:kde worker 後台運行 cal nan class .net des end
在Html 5誕生之後,我們可以使用javascript來實現多執行緒。H5 新增了一個web workers api,使用這個API,使用者可以很容易地建立在後台啟動並執行線程,H5 中被稱為workder ,如果將費時比家長的操作放到後台去執行,對使用者在介面的操作就完全沒有影響了。
建立後台線程也十分的簡單,只要在workder類的構造器中將需要執行的指令檔的url作為參數,然後建立worker對象就可以了,如下所示
var worker = new Worker("test.js")
在建立了worker對象之後,我們可以通過worker的postMessage()來向後台線程發送訊息。可以使用onmessage(msg) 來擷取訊息。
下面我們來看一下多線程之間通訊,在這裡實現多個worker之間通訊實際上需要藉助主線程,子線程A將訊息發送給主線程,然後主線程將A線程發送的訊息發送給B.下面是實現的代碼。
a href="http://www.codesec.net/kf/qianduan/css/" target="_blank" class="keylink">html><script>var sendWorker = new Worker("js/send.js"); //訊息發送線程var receiveWorker = new Worker("js/receive.js"); //訊息接送線程sendWorker.onmessage = function(msg){receiveWorker.postMessage(msg.data); //接收到訊息之後馬上發給接受線程}function sendMessage(){sendWorker.postMessage(""); //啟動訊息發送線程發送訊息。}</script>
send.js
onmessage = function(msg){postMessage("這個是子線程A 發送的訊息");// 線程A 發出訊息}
receive.js
onmessage = function(msg){//alert(msg.data); //這句話會報錯,因為當前這個方法是在子線程中執行,所以不能使用alert,因為這個會影響UIconsole.log(msg.data); // 接受線程在控制台輸出}
最後說一下workder之中可用的變數,函數,類
self :該關鍵字用來本線程的範圍。
postMessage(msg) 向建立線程的源視窗發送訊息。
onmessage 擷取接受訊息的事件 控制代碼。
importScripts(urls) 匯入其他的javascript指令碼。
使用navigator對象。
使用sessionStorage/localStorage
使用ajax請求
嵌套線程
close結束本線程。
setTimeout/setInterval
eval().isNaN()等,可以使用所有javascript核心函數。
object
可以使用WebSockets api.
JavaScript 中的多線程通訊的方法