立即运行setInterval

时间:2015-03-09 16:23:23

标签: 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);

    });

});

1 个答案:

答案 0 :(得分:2)

你的第一个没有像你想象的那样执行一个功能。 Interval重新编译一个id,而不是对被调用方法的引用。控制台中应该有错误。

第二个是调用函数并存储函数返回的间隔。在你的情况下,它没有返回任何东西,所以它存储未定义。

存储功能,引用它并调用它。

$(function () {

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

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

});

或使用Timeout而不是interval。

$(function () {

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

});