function process(){
window.location.reload(false);
}
function looping(){
setTimeout(process(), 10000);
}
var looper = setInterval(looping(), 10000);
我正在尝试每10秒重新加载一个页面,但上面的代码会过于频繁地重新加载页面。为什么呢?
答案 0 :(得分:3)
function process(){
window.location.reload(false);
}
function looping(){
setTimeout(process, 10000);
}
var looper = setInterval(looping, 10000);
尝试上面的代码。
在您的示例中,您只是调用回调函数,而不是向setTimeout和setInterval提供回调函数。只提供函数名称及其固定的更新:函数是JS中的第一类对象。你可以将它传递给一个函数,从另一个函数返回一个函数等...所以这些事情都是通过使用函数名称(只是函数名,就像任何其他变量名)来完成的。
使用括号调用函数,您错误地调用了函数,而不是将函数传递给setTimeout
你可以完全摆脱setTimeout,只需按照下面的说明进行操作
function process(){
window.location.reload(false);
}
var looper = setInterval(process, 10000);
答案 1 :(得分:1)
您的代码存在的问题是,您正在调用该函数,而不是在时间间隔之后传递它以进行调用。如果需要传递函数,只需传递函数的名称即可。放括号实际上是调用函数,它会在你设置setInterval时立即发生
如果您想每10秒重新加载一次页面,可以稍微简化一下。在这种情况下,我没有看到为什么你应该有setInterval的原因。我认为这已经足够了,应该可行
// After 10s, run the function
setTimeout(function() { window.location.reload(false)},10000)
在所有DOM准备就绪后,您可能希望计算10秒。
var fn = function() {
setTimeout(function() { window.location.reload(false)},10000);
}
// Note that, I pass the function name instead of invoking it with fn()
document.addEventListener('DOMContentLoaded', fn)
我使用setTimeout而不是setInterval的原因是,每个会话只运行一次并刷新。我认为这应该足够了。
答案 2 :(得分:0)
process()
这将调用函数,process
将返回函数。因此,您的函数会立即调用。
试
setTimeout(process,10000)