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); }