所以我有這個主要的js文件:HTML5 WebWorker邏輯流程
var worker = new Worker("../Scripts/worker.js");
worker.onmessage = function (event) {
alert("Worker said : " + event.data);
};
worker.postMessage("Naruto");
worker.postMessage("Sakura");
和worker.js是在這裏:
self.onmessage = function (event) {
self.postMessage("Hi " + event.data);
};
self.postMessage("WHERE'S SASUKE? [1]");
self.postMessage("WHERE'S SASUKE? [2]");
我還在他們是如何工作的有點糊塗了。但是出來的東西是這樣的(按出場順序):
Worker said: WHERE'S SASUKE? [1]
Worker said: WHERE'S SASUKE? [2]
Worker said: Hi Naruto
Worker said: Hi Sakura
他們說,要啓動工作,使用postMesage()。
第一個問題: 因此,如果我的主要js文件postMessage(「Naruto」),爲什麼工作人員首先顯示兩個「Where are SASUKE?」然後顯示火影忍者和櫻花?它不應該首先觸發它的onMessage事件,因爲它從主線程收到數據?
第二個問題: 當我postMessage(「火影忍者」),它顯示了兩個「在哪裏SASUKE?」。但爲什麼當我做postMessage(「櫻」),它沒有顯示兩個「在哪裏SASUKE?」?我的意思是,我在主線程中調用了postMessage()兩次,爲什麼只顯示兩個「WHERE'S SASUKE」?它不應該「執行」兩次worker.js,因此看到四個「Where are SASUKE?」? (賜教請)
1 /「他們說要啓動一名工人,請使用postMesage()。「誰說的 ?您將主要「線程」註冊到工作活動中,這隻需從工作人員廣播消息即可。 2從主線程向工作人員廣播消息的地方,看看每次發送消息時,爲什麼工作人員會回覆「Where are SASUKE」,因爲您的腳本沒有這樣做? – mpm
https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers產生一個工人部分。第6行代碼。我也使用了這個術語,但你知道這個意思 –
除了這個例子沒有發佈來自worker的消息,這也啓動了工作線程 – mpm