如何调用保存在变量中的setInterval函数



我有一个setInterval()函数保存到一个变量中,以便能够在使用clearInterval()之后清除它。

walkRight = setInterval(moveSnakeRight,1000) 
walkLeft = setInterval(moveSnakeLeft, 1000)
walkUp = setInterval(moveSnakeUp, 1000)
walkDown = setInterval(moveSnakeDown, 1000) 
//and
clearInterval(walkLeft)
clearInterval(walkRight)
clearInterval(walkUp)

我的问题是,是否有任何方法可以再次调用相同的SetInterval,在这种情况下,是walkRight、walkLeft或walkUp。他们中的任何一个。。

如果我尝试walkRight((,它将不起作用,因为它不是一个函数;如果我尝试window.walkRight也不起作用。

setInterval的返回值是一个数字,用于识别仅用于清除间隔的

无法使用该数字来获取有关间隔的任何其他信息。您不能使用它来确定用于运行间隔的函数。您不能用它再次调用该函数。

如果您想要这些信息,必须将其单独存储。

例如:

const moveSnakeRight = () => {
console.log('moving right');
};
class IntervalController {
constructor(func) {
this.func = func;
this.start();
}
start() {
if (typeof this.interval === "undefined") {
this.interval = setInterval(this.func, 1000);
}
}
stop() {
clearInterval(this.interval);
this.interval = undefined;
}
}
const moveRightController = new IntervalController(moveSnakeRight);
document.querySelector('#start').addEventListener('click', () => moveRightController.start());
document.querySelector('#stop').addEventListener('click', () => moveRightController.stop());
<button id=start>Start</button>
<button id=stop>Stop</button>

最新更新