setInterval以及如何使用clearInterval

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()一次不创build一个循环调用drawAll一次又一次,我应该使用recursion方法呢,还是应该使用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为“无定时器设置”提供了便利的标志值。 (其他平台可能会返回其他值; NodeJS的定时器函数会返回一个对象)。

要安排一个函数触发一次,请改用setTimeout 。 它不会继续射击。 (它也返回一个句柄,你可以用它来取消它通过clearTimeout它才会触发一次,如果适当的话)。

 setTimeout(drawAll, 20); 

使用setTimeout(drawAll, 20)来代替。 那只能执行一次该function。

clearInterval是一个选项:

 var interval = setInterval(doStuff, 2000); // 2000 ms = start after 2sec function doStuff() { alert('this is a 2 second warning'); clearInterval(interval); }