我想要实现的是,最初将加载数据,然后使用相同的功能每十分钟更新一次。
考虑以下代码:
var updateNamespace = (function() {
var object = '#updates',
load = 'loader';
return {
update: function() {
$(object).addClass(load).load('update.php', function(reponse, status, xhr) {
if (status == 'error') {
$(this).html('<li>Sorry but there was an error in loading the news & updates.</li>');
}
$(this).removeClass(load);
});
}
}
})();
setInterval(updateNamespace.update(), 600000);
我收到此错误:
useless setInterval call (missing quotes around argument?)
我该如何解决这个问题?
写这个或使用setInterval
函数有什么更好,更优雅的方式?
感谢。
答案 0 :(得分:14)
您需要使用:
setInterval(updateNamespace.update, 600000);
(注意删除的invocation()运算符。)
您编写的代码在调用setInterval时实际上会调用updateNamespace.update
。因此,
setInterval(updateNamespace.update(), 600000);
评估为
setInterval(undefined, 600000);
您希望将setInterval
参考传递给您的函数,而不是其调用的结果。
答案 1 :(得分:0)
出于某种原因,JavaScript希望在您的调用方法周围看到引号。好像它是一个字符串。不知道为什么它会这样。 Matt H.说如果你传递一个可以解决问题的引用。但如果您需要传递参数,它将无法工作。所以我不知道JavaScript可能只是将方法保存为字符串,然后在使用时转换回正常状态。
答案 2 :(得分:-6)
尝试setInterval('updateNamespace.update()', 600000);
注意函数调用的引号