【发布时间】:2011-11-03 12:39:07
【问题描述】:
我想连续每 5 秒调用一次 Javascript 函数。 我见过 setTimeOut 事件。如果我要连续使用它会正常工作吗?
【问题讨论】:
标签: javascript dom-events
我想连续每 5 秒调用一次 Javascript 函数。 我见过 setTimeOut 事件。如果我要连续使用它会正常工作吗?
【问题讨论】:
标签: javascript dom-events
你可以使用setInterval(),参数是一样的。
const interval = setInterval(function() {
// method to be executed;
}, 5000);
clearInterval(interval); // thanks @Luca D'Amico
【讨论】:
setInterval(methodName,5000))的代码没有使用eval。 eval 仅在第一个参数作为字符串传递时用于setInterval/setTimeout。
clearInterval() 并传递您的 Interval ID 作为参数。
对您的函数执行“递归”setTimeout,它将在每个定义的时间量内继续执行:
function yourFunction(){
// do whatever you like here
setTimeout(yourFunction, 5000);
}
yourFunction();
【讨论】:
setInterval 会导致内存泄漏。通过使用setTimeout,您可以确保下一个函数调用不会被触发直到上一个函数调用完成。
正如best coding practices 建议的那样,使用setTimeout 而不是setInterval。
function foo() {
// your function code here
setTimeout(foo, 5000);
}
foo();
请注意,这不是递归函数。该函数在结束前并没有调用自己,而是调用了一个setTimeout 函数,该函数稍后将再次调用相同的函数。
【讨论】:
为了在未来重复某个动作,可以使用内置的 setInterval 函数来代替 setTimeout。
它有一个相似的签名,所以从一个到另一个的转换很简单:
setInterval(function() {
// do stuff
}, duration);
【讨论】:
这里有很好的工作示例:http://jsfiddle.net/MrTest/t4NXD/62/
加号:
fade in / fade out 动画:hover
经过测试并且可以正常工作!
【讨论】: