使用setInterval()和clearInterval()的方法是否正确且更有效?
1
something = setInterval(function() {
try {
...load something
clearInterval(something);
} catch (e) {
// error
}
}, 5000);
2
something = setInterval(function() {
try {
...load something
} catch (e) {
// error
}
}, 5000);
setTimeout(something, 7000);
编辑:
对于#2,我的意思是setTimeout()而不是clearInterval()。已被更改。
答案 0 :(得分:0)
我认为您interval
传入的clearInterval
意味着something
。
您的第二个示例永远不会触发您的计时器,因为您在设置后立即清除计时器。您还将参数(7000
)传递给不会被使用的clearInterval
(clearInterval
只接受一个参数)。
您的第一个示例是提供,您希望在处理程序中调用clearInterval
的位置清除重复的计时器。大概是if
或类似的,因为如果你想要一次性定时回调,你可以使用setTimeout
,而不是setInterval
。
编辑:
对于#2,我的意思是setTimeout()而不是clearInterval()。已被更改。
这完全改变了这个问题。不,那不正确。 setInterval
计划在您提供的时间间隔内重复调用的函数,您不会将其返回值传递给setTimeout
。
答案 1 :(得分:0)
如果您需要反复发生某些事情,请使用setInterval
如果您只需要使用setTimeout
就可以使用setInterval
(您可以通过链接多个超时来模拟clearInterval
其他)。超时只发生一次,因此您无需清除它们。此外,{{1}}不会使用时间参数,因此您设置的间隔将在执行之前被清除,因为经典的javascript是同步的。
答案 2 :(得分:0)
只是为了完成答案,请小心使用setInterval()。如果你的“...加载某些东西”需要花费更多的时间来加载时间(由于某种原因或其他原因)。它将暂时不执行此操作并等待下一次setinterval调用。 我鼓励尽可能多地使用setTimeout()。
答案 3 :(得分:0)
根据我的回答您的问题,您可以在下面找到用例:
对于你的案例1:
var something = setInterval(function() {
// Do stuff, and determine whether to stop or not
if (stopCondition) {
clearInterval(something);
}
}, 5000);
对于你的案例2:
var something = setInterval(function() {
// Do stuff
}, 5000);
// Pass a function to setTimeout
setTimeout(function() {
clearInterval(something);
}, 17000);