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
?谢谢 :)
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);
}
使用setTimeout(drawAll, 20)
代替。那只会执行一次功能。
我用角与电子,
就我而言,setInterval
返回一个Nodejs Timer对象。当我打电话时clearInterval(timerobject)
它不起作用。
我必须先获取ID并调用clearInterval
clearInterval(timerobject._id)
我为此付出了很多努力。希望这可以帮助。
旁注–如果要使用单独的功能来设置和清除间隔,则必须在“相对全局”或“一级升级”范围内对所有变量都可以访问interval变量:
var interval = null;
function startStuff(func, time) {
interval = setInterval(func, time);
}
function stopStuff() {
clearInterval(interval);
}
本文地址:http://javascript.askforanswer.com/ruheshiyongsetintervalheclearinterval.html
文章标签:javascript , jquery
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:javascript , jquery
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!