延迟第一个函数调用n秒

时间:2016-10-06 14:06:07

标签: javascript

我有一个javascript函数,我设置了每30秒执行一次的间隔。这是我的代码:

function ping() {
    // code ...
}

ping(); // call function when page loads for first time

// call function every 30 seconds
window.setInterval(function(){
    ping();
}, 30000);

我想要做的是延迟第一次通话(当页面第一次加载时)5秒钟,然后该功能应该每30秒再次执行一次。

我尝试了setTimeout,但似乎没有效果,它会毫不犹豫地执行我做错的任何想法?

setTimeout(ping(), 5000); // delay first call for 5 secs

// call function every 30 seconds
    window.setInterval(function(){
        ping();
    }, 30000);

2 个答案:

答案 0 :(得分:2)

您正在setTimeout(ping(), 5000);上立即拨打电话。您将ping()的结果设置为超时功能。如果你希望在超时时调用ping,那么执行setTimeout(ping, 5000);或将其包装在一个闭包中,就像你第二次一样。

答案 1 :(得分:2)

我猜你不会等到超时才宣告间隔功能。

有几种不同的方法可以做到,所以让我建议一下:

function ping() {
    // code ...
}

setTimeout(function () {

    ping(); // call function when page loads for first time

    // call function every 30 seconds
    window.setInterval(function(){
        ping();
    }, 30000);
}, 5000);