我有一个web worker,它将一些段落附加到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();但我希望将其封装在一个函数中,并尝试在按钮的click事件之后终止它
<button onClick="javascript:killworker();">stop worker</button>我的代码似乎没有终止worker.Why,不是吗?
发布于 2013-05-14 23:44:38
您的killworker函数是否在更广泛的上下文中定义?如果是,那就是你的问题。尝试使用window.killworker = function() { }而不是function killworkers() {}来明确地将您的函数定义为可从任何范围访问的全局函数。
发布于 2013-05-15 00:17:19
我必须先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>
https://stackoverflow.com/questions/16547421
复制相似问题