javascript - 立即运行 setInterval

标签 javascript jquery

我试图在按下按钮后立即执行 setInterval 函数,然后每 5 秒运行一次该函数。

为什么这有效:

$(function () {

    $('button').on('mousedown', function () {

        var checkUser = setInterval(function () {

        }, 5000);

    checkUser();

    });

});

但不是这个:

$(function () {

    $('button').on('mousedown', function () {

        var checkUser = setInterval(function () {

        }(), 5000);

    });

});

最佳答案

你的第一个并不是像你想象的那样执行一个函数来启动。 Interval 返回一个 id,而不是对被调用方法的引用。控制台应该有错误。

第二个是调用函数并将函数返回的值存储为间隔。在您的情况下,它没有返回任何内容,因此它存储的是未定义的。

存储函数、引用它并调用它。

$(function () {

    $('button').on('mousedown', function () {
        var myFunc = function () {

        };
        var checkUser = setInterval(myFunc, 5000);
        myFunc();
    });

});

或使用超时而不是间隔。

$(function () {

    $('button').on('mousedown', function () {
        var myFunc = function () {
            /* do stuff */
            setTimeout(myFunc, 5000);    
        };
        myFunc();
    });

});

关于javascript - 立即运行 setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28946928/

相关文章:

javascript - Vue 2 - 监听滚动事件

javascript - 渐变背景 UL

javascript - 在 WPF Web 浏览器中调用 Javascript,无需调度程序

javascript - 在 Javascript 中比较循环中的日期数组

javascript - Promise 可以按顺序加载多个 url 吗?

javascript - C# Cefsharp 无法 getElementsByClassName

javascript - 如果鼠标移动得更快时条件没有执行

jQuery 不工作 - 奇怪

javascript - 使用 Javascript/jQuery 创建垂直时间轴

javascript - 使用ajax请求更新数据表