Javascript 延迟第一次函数调用n秒

Javascript 延迟第一次函数调用n秒,javascript,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); 我想做的是,当页面第一次加载时,将第一次调用延迟

我有一个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);

您在setTimeoutping 5000;上立即调用它;。您正在将ping的结果设置为超时函数。如果您希望在超时时调用ping,则执行setTimeoutping,5000;或者像第二次那样,将其封装在一个闭包中。

您在setTimeoutping上立即调用它,5000;。您正在将ping的结果设置为超时函数。如果您希望在超时时调用ping,则执行setTimeoutping,5000;或者像第二次那样,将其封装在闭包中。

我想您不会等到超时后才声明interval函数

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

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);

我猜您不会等到超时后才声明interval函数

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

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);

更改setTimeoutping,5000;设置时间输出,5000;。后跟函数名将立即调用它。如果删除对ping的调用中的,则此操作应有效。更改setTimeoutping,5000;设置时间输出,5000;。后跟函数名将立即调用它。如果在对ping的调用中删除了中的,则应该可以这样做。是的,这似乎按照预期工作。非常感谢。是的,这似乎和预期的一样。非常感谢。