2013-05-14 100 views
0

我有這樣的網絡工作者是追加一些段落到一個div和它類似這樣的終止一個網絡工作者

var worker1 = new Worker('many.js'); 
var worker2 = new Worker('many.js'); 
var worker3 = new Worker('many.js'); 
var worker4 = new Worker('many.js'); 

     worker1.onmessage = function (event) { 
     function xx(){$(event.data).appendTo('#div_1');} 
     setInterval(xx,4000); 
     }; 

     worker2.onmessage = function (event) { 
     function xx(){$(event.data).appendTo('#div_2');} 
     setInterval(xx,4400); 
     }; 


     function killworker(){ 
     worker1.terminate(); 
     } 

這是many.js文件

function j() 
{return "<p>lorem ispum</p>"} 

postMessage(j()); 

我能夠摧毀工人這樣

worker1.terminate(); 

,但我也喜歡來包裝的功能和嘗試,並終止它下面的一個點擊事件來回回一個按鈕

<button onClick="javascript:killworker();">stop worker</button> 

我的代碼似乎並沒有終止worker.Why它不工作嗎?

+0

你不需要'的JavaScript:'內聯事件處理程序。你需要它的'href'一個''雖然,但這是無關你和你的代碼 – Ian 2013-05-14 15:49:44

+0

我已糾正,謝謝。 – Gandalf 2013-05-14 16:17:11

回答

0

您的killworker函數在更廣泛的上下文中定義?如果是的話,那是你的問題。請嘗試使用window.killworker = function() { }而不是function killworkers() {}將您的函數明確定義爲可從任何範圍訪問的全局函數。

0

我不得不給clearInterval第一

我的代碼現在看起來像

var worker1 = new Worker('many.js'); 
var worker2 = new Worker('many.js'); 
var worker3 = new Worker('many.js'); 
var worker4 = new Worker('many.js'); 

     var timer = 0; 

     worker1.onmessage = function (event) { 
     function xx(){$(event.data).appendTo('#div_1');} 
     timer = setInterval(xx,2000); 
     }; 

     function killworker(){ 
     clearInterval(timer); 
     worker1.terminate(); 
     } 

     worker2.onmessage = function (event) { 
     function xx(){$(event.data).appendTo('#div_2');} 
     setInterval(xx,2200); 
     }; 

我的按鈕<button onclick="killworker()">stop worker</button>