将第一个函数调用延迟n秒

Delay first function call for n-seconds

本文关键字:延迟 函数调用 第一个      更新时间:2023-09-26

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

我猜你没有等到超时才声明间隔函数。

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

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

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