考虑:
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
?
原文由 Raj 发布,翻译遵循 CC BY-SA 4.0 许可协议
setInterval
设置一个 循环 计时器。它返回一个句柄,您可以将其传递给clearInterval
以阻止它触发:在浏览器上,句柄保证是一个不等于
0
的数字;因此,0
为“未设置计时器”提供了一个方便的标志值。 (其他平台可能会返回其他值;例如,Node.js 的计时器函数会返回一个对象。)要安排一个函数 只 触发一次,请改用
setTimeout
。不会一直开火。 (它还返回一个句柄,您可以使用它在它触发之前通过clearTimeout
取消它,如果合适的话。)