小编典典

如何使用 setInterval 和 clearInterval?

all

考虑:

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


阅读 64

收藏
2022-08-20

共1个答案

小编典典

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为“未设置计时器”设置一个方便的标志值。(其他平台可能会返回其他值;例如,Node.js
的计时器函数会返回一个对象。)

要安排一个函数
触发一次,请setTimeout改用。不会一直开火。(它还返回一个句柄,您可以clearTimeout在它触发之前通过它取消它,如果合适的话。)

setTimeout(drawAll, 20);
2022-08-20