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。