Answers:
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);
clearInterval是一种选择:
var interval = setInterval(doStuff, 2000); // 2000 ms = start after 2sec
function doStuff() {
alert('this is a 2 second warning');
clearInterval(interval);
}
setInterval(doStuff);
。将字符串传递到setInterval
是对的隐式调用eval
。最好改为传递函数引用。
使用setTimeout(drawAll, 20)
代替。那只会执行一次功能。
setInterval
或一起使用setTimeout
。