Javascript 如何在页面加载时启动脚本,然后使用setInterval
我有一个函数,timer(),我想在页面加载时立即运行一次,然后每隔一秒运行一次 目前,我有以下使用setInterval的代码:Javascript 如何在页面加载时启动脚本,然后使用setInterval,javascript,jquery,Javascript,Jquery,我有一个函数,timer(),我想在页面加载时立即运行一次,然后每隔一秒运行一次 目前,我有以下使用setInterval的代码: $(document).ready(function() { var timer = function(){ ... } timer(); setInterval(function(){ timer(); }, 1000); }); 注意,我不想单独使用setInterval,因为这会在页面加载后产生1秒延迟 然而,我的计时器()的使用;
$(document).ready(function() {
var timer = function(){
...
}
timer();
setInterval(function(){
timer();
}, 1000);
});
注意,我不想单独使用setInterval,因为这会在页面加载后产生1秒延迟
然而,我的计时器()的使用;似乎停止了页面上其他脚本的工作。有什么想法吗?控制台中没有错误。我将使用setTimeout()
:
$(document).ready(function() {
var timerLoop;
var timer = function(){
...
timerLoop = setTimeout(timer, 1000);
};
timer();
}
请注意timerLoop
变量,如果需要,可以使用该变量停止“间隔”(clearTimeout(timerLoop);
)
它们不是真正的异步的,它们只是定时的。如果有另一个脚本正在运行,则会在上一个脚本完成后执行定时脚本
我更喜欢setTimeout()
而不是seInterval()
,因为后者有一个缺点:如果有另一个脚本阻止执行由setInterval()
设置的定时调用,这些调用将被堆叠,并且当阻塞脚本完成时,所有堆叠的调用都会尽快执行。通常这是不希望出现的行为。尝试console.log(timer)
,您将清楚地看到它是一个数字,而不是您可以调用的函数
相反,您必须手动调用函数并设置计时器
function timer() {
// do something
}
$(function() {
timer();
setInterval(timer,1000);
});
或者,您可以使用重复超时:
function timer() {
// do something
setTimeout(timer,1000);
}
$(timer);
谢谢,尽管在.ready函数中,这仍然可以防止加载其他脚本?执行定时脚本也会阻止其他脚本。如果在脚本中加载脚本,则加载本身是异步完成的,但在当前脚本完成之前不会执行任何操作。@Alias 51要向您展示
setInterval()
与setTimeout()
的区别,请检查(使用非IE浏览器),请访问另一个选项卡一会儿,回到“一团糟”。然后在同一时间做同样的事情,你会看到不同之处。