我编写了一些应该从外部js文件(workers_demo.js)接收Web worker消息并将其放在输出标记之间的代码。 javascript使得在点击按钮时接收第一消息并且每秒接收消息(因此标签之间的html每秒递增1)。但是,问题是数字增加到1但在此之后不会继续增加。以下是主文件:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src= "jquery-2.1.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
if(typeof(Worker) !== "undefined"){
var w;
$("button#start").click(function(){
if(typeof(w) == "undefined") {
w = new Worker("workers_demo.js");
}
w.onmessage = function(event){
console.log("I have received a message");
$("output#number").html(event.data);
}
});
$("button#stop").click(function(){
w.terminate();
});
}else{
//fallback code
$("output#number").html("Sorry no web workers.");
}
});
</script>
</head>
<body>
<output id="number"></output>
<button id = "start">Start Counting</button>
<button id = "stop">Stop Counting</button>
</body>
</html>
上面代码中提到的web worker文件:
var output_number = 0;
function increment_numbers() {
output_number++;
postMessage(output_number);
setTimeout("increment_numbers",1000);
}
increment_numbers();
是什么导致数字第一次增加而不是随后增加?
答案 0 :(得分:1)
我已在评论中说过这一点,但我会回答它,以便人们知道问题有答案:
setTimeout("increment_numbers",1000);
应该是
setTimeout(increment_numbers,1000); //no quotes around the function name