【发布时间】:2011-08-05 01:32:17
【问题描述】:
我想在发生重复事件(点击“保存”按钮)时触发一个操作(如“更新已保存!”消息),但在给定时间段内不触发两次。
对于以下内容,我希望 excecuteFunction() 最多每 3 秒触发一次,但如果 setInterval 在 4.5 秒后被清除,我会仍然希望它在 6 秒后再次触发。
var minimumTime = 3000; // minimum ms between events
function myTimedEvent() {
if ( lessThanMinimumTime() )
// loop through again
else {
executeFunction();
}
}
window.setInterval(myTimedEvent, 500);
executeFunction() 可以在执行时创建一个时间戳,lessThanMinimumTime() 可以将该时间戳与当前时间进行比较,然后设置一个子间隔,如果它在最小时间范围内,则由executeFunction() 清除。
一定有更好的办法。
【问题讨论】:
-
为什么不禁用按钮然后在计时器中启用它?
-
按钮只是一个例子——它实际上是一个后台进程。
-
我会考虑将函数调用包装在一个 callBack 类中,该类保存每个函数最后一次调用的时间戳...看起来丑陋但可靠...
标签: javascript algorithm events timeout