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