function live() {
middleMan = setInterval(processGeneration, speed);
if (!dead) {
window.clearInterval(middleMan);
live();
}
}
此代码用于每 speed 毫秒运行 processgeneration()函数,直到 dead 为真。代码运行时,返回
error: too much recursion
到控制台。我忽略了这一点,因为代码仍然按预期工作(显然)。现在我想添加一个暂停功能,如下所示:
if (!pause) {
live();
console.log(g); //for debugging
}
但它不会对暂停更改的值做出反应(通过按钮点击切换)。 g 的值都没有返回到控制台。我如何解决这个问题?
答案 0 :(得分:1)
试试这个
function live() {
if (dead) {
clearInterval(middleMan);
return;
}
// do something when alive
}
var middleMan=setInterval(live,speed);
或
function live() {
if (dead) {
return;
}
// do something when alive
setTimeout(live,speed);
}
live();
答案 1 :(得分:1)
你已经递归调用了live()
函数,这个函数没有停止,我想你想要这样的事情,processgeneration()
正在执行,直到死为真。
var speed = 1000;
dead = false;
middleMan = setInterval(processGeneration, speed);
function live() {
if (dead) {
alert('this will clear the set interval');
window.clearInterval(middleMan);
}
}
function processGeneration(){
console.log("output ");
}
setTimeout(function(){
dead = true; //put your condition here when your dead is true
live();
}, 4000);
live();