'setInterval'和'setTimeout'

主要区别是什么?

的setInterval

的setTimeout

在JavaScript中?

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. 

setInterval 每隔一段时间一次又一次触发,而setTimeout只触发一次。

请参阅MDN的参考 。

的setTimeout():

这是一个在x间隔AFTER执行JavaScript语句的函数。

 setTimeout(function () { something(); }, 1000); // Execute something() 1 second later. 

的setInterval():

这是一个每隔x间隔执行一次JavaScript语句的函数。

 setInterval(function () { somethingElse(); }, 2000); // Execute somethingElse() every 2 seconds. 

这两个函数的间隔单位是millisecond

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

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