javascript - 如何使用 setInterval 和 clearInterval?

标签 javascript jquery

考虑:

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

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

setTimeout(drawAll, 20);

关于javascript - 如何使用 setInterval 和 clearInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5978519/

相关文章:

javascript - 为什么这不起作用 - 使用 :not() with an event handler

javascript - Vue.js 组件仅在将模板保存在 asp.net core 中后呈现

javascript - 使 Javascript 成为 HTML 页面的预加载器

javascript - 功能不增加值(value)

javascript - jQuery DatePicker 不显示

javascript - JQuery 迭代当前 SELECT 值

JavaScript 验证 - 中止 ColdFusion 操作页面加载

javascript - 图表js如何在不点击的情况下切换线条

javascript - 如何在页面上没有图像的情况下在 HTML5 Canvas 上使用图像?

javascript - 从 JSON 数据填充复选框