为什么 setTimeout 和 setInterval 运行 太快了?
Why does setTimeout and setInterval run too fast?
function process(){
window.location.reload(false);
}
function looping(){
setTimeout(process(), 10000);
}
var looper = setInterval(looping(), 10000);
我试图每 10 秒重新加载一次页面,但上面的代码会过于频繁地重新加载页面。为什么?
function process(){
window.location.reload(false);
}
function looping(){
setTimeout(process, 10000);
}
var looper = setInterval(looping, 10000);
试试上面的代码。
在您的示例中,您没有为 setTimeout 和 setInterval 提供回调函数,而是调用了回调函数。只需提供函数名称及其固定值
更新:函数是 JS 中第一个 class 对象。您可以将它传递给一个函数,return 来自另一个函数的函数等...因此只需使用函数名称(只是函数名称,就像任何其他变量名称一样)就可以完成这些事情。
调用函数是使用括号完成的,您错误地调用了函数,而不是将函数传递给 setTimeout
您可以完全摆脱 setTimeout,只需按如下所示进行
function process(){
window.location.reload(false);
}
var looper = setInterval(process, 10000);
process()
这将调用函数并且 process
将 return 函数。因此您的函数会立即被调用。
尝试
setTimeout(process,10000)
您的代码存在问题,您调用的是函数,而不是将其传递给在时间间隔后调用的函数。如果需要传递函数,只需传递函数名即可。放置括号实际上是调用函数,该函数将在您设置 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 的原因是,每个会话只会 运行 一次并且会刷新。我觉得应该够用了。
function process(){
window.location.reload(false);
}
function looping(){
setTimeout(process(), 10000);
}
var looper = setInterval(looping(), 10000);
我试图每 10 秒重新加载一次页面,但上面的代码会过于频繁地重新加载页面。为什么?
function process(){
window.location.reload(false);
}
function looping(){
setTimeout(process, 10000);
}
var looper = setInterval(looping, 10000);
试试上面的代码。
在您的示例中,您没有为 setTimeout 和 setInterval 提供回调函数,而是调用了回调函数。只需提供函数名称及其固定值
更新:函数是 JS 中第一个 class 对象。您可以将它传递给一个函数,return 来自另一个函数的函数等...因此只需使用函数名称(只是函数名称,就像任何其他变量名称一样)就可以完成这些事情。
调用函数是使用括号完成的,您错误地调用了函数,而不是将函数传递给 setTimeout
您可以完全摆脱 setTimeout,只需按如下所示进行
function process(){
window.location.reload(false);
}
var looper = setInterval(process, 10000);
process()
这将调用函数并且 process
将 return 函数。因此您的函数会立即被调用。
尝试
setTimeout(process,10000)
您的代码存在问题,您调用的是函数,而不是将其传递给在时间间隔后调用的函数。如果需要传递函数,只需传递函数名即可。放置括号实际上是调用函数,该函数将在您设置 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 的原因是,每个会话只会 运行 一次并且会刷新。我觉得应该够用了。