答案 0 :(得分:368)
setTimeout(expression, timeout);
在超时后运行一次代码/函数。
setInterval(expression, timeout);
以间隔运行代码/函数,它们之间的超时长度。
示例:
var intervalID = setInterval(alert, 1000); // Will alert every second.
// clearInterval(intervalID); // Will clear the timer.
setTimeout(alert, 1000); // Will alert once, after a second.
答案 1 :(得分:69)
setInterval
在间隔中一次又一次地触发,而setTimeout
仅触发一次。
请参阅reference at MDN。
答案 2 :(得分:57)
<强>的setTimeout():强>
这是一个执行JavaScript语句AFTER
x interval。
setTimeout(function () {
something();
}, 1000); // Execute something() 1 second later.
<强>的setInterval():强>
这是一个执行JavaScript语句EVERY
x interval。
setInterval(function () {
somethingElse();
}, 2000); // Execute somethingElse() every 2 seconds.
两个功能的间隔单位都在millisecond
。
答案 3 :(得分:24)
setInterval
重复通话,setTimeout
只运行一次。
答案 4 :(得分:24)
setInterval是一种基于时间间隔的代码执行方法,具有在达到间隔时重复运行指定脚本的本机能力。它不应该被脚本作者嵌入到它的回调函数中以使其循环,因为它默认循环。除非你调用clearInterval()。它将继续按间隔触发。
如果要循环播放动画或时钟的代码 然后使用setInterval。
function doStuff() {
alert("run your code here when time interval is reached");
}
var myTimer = setInterval(doStuff, 5000);
setTimeout是一种基于时间的代码执行方法,它只会在达到间隔时执行一次脚本,并且不会再次重复,除非您通过将setTimeout对象嵌入其调用的函数内部来循环脚本。如果适合循环,除非你调用clearTimeout(),它将继续按间隔触发。
function doStuff() {
alert("run your code here when time interval is reached");
}
var myTimer = setTimeout(doStuff, 5000);
如果你想在几秒钟之后发生一次事情 然后使用setTimeout ...因为它只在达到间隔时执行一次。