Javascript webworker中的clearInterval不工作
我有一个网络工作者,工作很好 webworker.js:Javascript webworker中的clearInterval不工作,javascript,html,Javascript,Html,我有一个网络工作者,工作很好 webworker.js: //portion of webworker.js self.onmessage = function(evt){ if(evt.data == "start"){ var i = 0; var mytimer = setInterval(function(){ i++; postMessage(i); },1000); } if
//portion of webworker.js
self.onmessage = function(evt){
if(evt.data == "start"){
var i = 0;
var mytimer = setInterval(function(){
i++;
postMessage(i);
},1000);
}
if(evt.data == "stop"){
clearInterval(mytimer);
}
}
但“清除间隔”不起作用。我遗漏了什么吗?mytimer是您函数的本地计时器。如果希望它在对onmessage的调用中保持不变,则需要将其移动到某个外部作用域:
var mytimer;
self.onmessage = function(evt) {
if (evt.data == "start") {
var i = 0;
mytimer = setInterval(function() {
i++;
postMessage(i);
}, 1000);
} else if (evt.data == "stop") {
clearInterval(mytimer);
}
};
mytimer是本地函数。如果希望它在对onmessage的调用中保持不变,则需要将其移动到某个外部作用域:
var mytimer;
self.onmessage = function(evt) {
if (evt.data == "start") {
var i = 0;
mytimer = setInterval(function() {
i++;
postMessage(i);
}, 1000);
} else if (evt.data == "stop") {
clearInterval(mytimer);
}
};
正如其他人所说,问题在于mytimer变量的范围 如果要避免全局命名空间混乱,可以使用以下命令将其存储为静态变量:
正如其他人所说,问题在于mytimer变量的范围 如果要避免全局命名空间混乱,可以使用以下命令将其存储为静态变量:
删除mytimer之前的var部分。删除mytimer之前的var部分。这不是很干净。如果支持web工作人员,您就不能至少使用一个命名函数吗?这不是很干净。如果支持web workers,您不能至少使用一个命名函数吗?