JavaScript 中的多線程通訊的方法

來源:互聯網
上載者:User

標籤: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 中的多線程通訊的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.