2013-05-14 70 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>