Web Worker javascript多線程編程(一)中提到有兩種Web Worker:專用線程dedicated web worker,以及共享線程shared web worker。不過主要講了專用線程dedicated web worker,并未提及共享線程shared web worker。那么這一篇文章繼上一篇講講共享線程shared web worker。

shared web worker:運(yùn)行的是更為普遍性的代碼,可以為多個(gè)頁面服務(wù)。它可以被與之相關(guān)聯(lián)的多個(gè)頁面訪問,只有當(dāng)所有關(guān)聯(lián)的的頁面都關(guān)閉的時(shí)候,該Shared web worker才會(huì)結(jié)束。

注意:如果要使共享進(jìn)程可以連接到多個(gè)不同的頁面,這些頁面必須屬于相同的域(相同的協(xié)議,主機(jī)以及端口);

如何創(chuàng)建shared web worker
創(chuàng)建shared web worker與創(chuàng)建dedicated web worker方法類似,調(diào)用SharedWorker()構(gòu)造函數(shù),指定一個(gè)要在 worker 線程內(nèi)運(yùn)行的腳本的 uri。
下面的代碼展示了如何通過SharedWorker()構(gòu)造函數(shù)來創(chuàng)建一個(gè)共享進(jìn)程對(duì)象。

var myWorker = new SharedWorker("worker.js");

 

與dedicated web worker不同的是,shared web worker訪問worker通過sharedworker.port屬性創(chuàng)建了一個(gè)messageport對(duì)象,該對(duì)象可以用來進(jìn)行通信和對(duì)共享進(jìn)程進(jìn)行控制。當(dāng)使用addEventListener監(jiān)聽message事件時(shí),端口需要手動(dòng)啟動(dòng),利用其start()方法,采用onmessage()則不用。

 

myWorker.port.start();

 

端口開啟后,使用port.postmessage()向SharedWorker發(fā)送消息,使用port.onmessage監(jiān)聽事件接收SharedWorker傳遞的消息,代碼演示如下:

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式