考虑:
function doKeyDown(event) {
switch (event.keyCode) {
case 32:
/* Space bar was pressed */
if (x == 4) {
setInterval(drawAll, 20);
}
else {
setInterval(drawAll, 20);
x += dx;
}
break;
}
}
我想调用一次drawAll()
,而不是创建一个循环来一次又一次地调用drawAll
.我应该为此使用递归方法还是应该使用 clearInterval
?
如何使用 clearInterval
?
最佳答案
setInterval
设置一个循环 计时器。它返回一个句柄,您可以将其传递给 clearInterval
以阻止它触发:
var handle = setInterval(drawAll, 20);
// When you want to cancel it:
clearInterval(handle);
handle = 0; // I just do this so I know I've cleared the interval
在浏览器上,句柄保证是一个不等于0
的数字;因此,0
为“未设置计时器”提供了一个方便的标志值。 (其他平台可能会返回其他值;例如,Node.js 的计时器函数会返回一个对象。)
要将函数安排为仅 触发一次,请改用setTimeout
。它不会一直开火。 (如果合适的话,它还会返回一个句柄,您可以使用它通过 clearTimeout
取消它,然后再触发一次。)
setTimeout(drawAll, 20);
关于javascript - 如何使用 setInterval 和 clearInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5978519/