我的Web应用程序当前使用它来启动客户端的通知检索:

$(document).ready( getNotifications() );


很棒,但是我需要它每隔XXX秒运行一次,因此我在getNotifications()的末尾添加了setInterval计时器,如下所示:

function getNotifications() {

    //(do stuff)

    //now repeat every X seconds (10000 = 10s)
    setInterval(getNotifications, 30000);
}


问题-这样做似乎会触发计时器循环功能的多个实例。使用alert(),我可以看到每个计时器周期都会为计时器创建一个新实例,而不是所需的同一实例的迭代。

如何在没有多个实例的情况下获得功能的计时器/循环?

谢谢!

最佳答案

setInterval更改为setTimeout

setInterval持续每X毫秒触发一次,
setTimeout在x毫秒后触发一次

并且您不希望()中的document.ready。它正在调用getNotifications,而不是为其分配引用。

function getNotifications() {
    window.setTimeout(getNotifications, 30000);
}
$( getNotifications );

08-17 06:21