'setInterval'vs'setTimeout'

时间:2010-04-23 06:38:45

标签: javascript

之间的主要区别是什么?

setInterval

setTimeout

在JavaScript中

5 个答案:

答案 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()

setInterval是一种基于时间间隔的代码执行方法,具有在达到间隔时重复运行指定脚本的本机能力。它不应该被脚本作者嵌入到它的回调函数中以使其循环,因为它默认循环。除非你调用clearInterval()。它将继续按间隔触发。

如果要循环播放动画或时钟的代码 然后使用setInterval。

function doStuff() {
alert("run your code here when time interval is reached");
}
var myTimer = setInterval(doStuff, 5000);

的setTimeout()

setTimeout是一种基于时间的代码执行方法,它只会在达到间隔时执行一次脚本,并且不会再次重复,除非您通过将setTimeout对象嵌入其调用的函数内部来循环脚本。如果适合循环,除非你调用clearTimeout(),它将继续按间隔触发。

function doStuff() {
alert("run your code here when time interval is reached");
}
var myTimer = setTimeout(doStuff, 5000);

如果你想在几秒钟之后发生一次事情 然后使用setTimeout ...因为它只在达到间隔时执行一次。