“setInterval”与“setTimeout”

IT技术 javascript
2021-02-05 00:51:48

之间的主要区别是什么

设置间隔

设置超时

在 JavaScript 中?

5个回答

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 更适合动画?这有什么道理吗?
2021-03-18 00:51:48
@lunixbochs,你能说,页面刷新时setInterval或setTimeout是否也刷新?
2021-03-23 00:51:48
如果页面刷新则设置间隔是否也被重置?
2021-03-24 00:51:48
当页面关闭或重新加载时,JavaScript 执行会完全重置。这也适用于 setInterval 和 setTimeout。
2021-03-25 00:51:48
我有一个 div,我想在页面加载后显示并在 X 秒后消失。将 setTimeout 与将样式更改为不显示的函数一起使用会实现此目的吗?
2021-03-28 00:51:48

setInterval间隔一次又一次地setTimeout触发,而只触发一次。

请参阅MDN 上的参考

setTimeout()

它是一个执行 JavaScript 语句AFTERx 间隔的函数

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

setInterval()

它是一个执行 JavaScript 语句EVERYx 间隔的函数

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

您可能想要嵌套一个 setTimeout 以使其循环。 function loopingTimeout(){setTimeout(function(){console.log("Timed out!");loopingTimeout();}, 1000)};
2021-03-12 00:51:48
但是用 setInterval 做同样的事情可能不是一个好主意,因为 setInterval 默认已经循环了。 function loopingInterval(){setInterval(function(){console.log("Soon this will spawn thousands of setIntervals and most likely freeze your browser.");loopingInterval();}, 1000)};
2021-03-30 00:51:48
这是比其他解释更彻底的解释。用于循环动画的 setInterval 用例非常有用。为了更多地改进这个答案,您能否提供一个有效的示例来解释您的意思“脚本作者不应将其嵌套到其回调函数中以使其循环,因为它默认循环”?也许是一个不该做什么的例子,然后是一个当作者希望使用循环时应该做什么的例子?
2021-04-07 00:51:48

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