& # 39; setinterval # 39;vs & # 39; settimeout # 39;

主要的区别是什么

setInterval

而且

setTimeout

在JavaScript中?

338674 次浏览

setInterval重复调用,setTimeout只运行一次。

setInterval时间间隔中反复触发,而setTimeout只触发一次。

看到MDN基准

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.

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中。

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…因为当达到间隔时,它只执行一次