gpt4 book ai didi

javascript - 以最小间隔触发 javascript 事件

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:43 26 4
gpt4 key购买 nike

我想在重复事件发生时(点击“保存”按钮)触发一个 Action (如“更新已保存!”消息),但在给定时间段内不触发它两次。

对于以下内容,我希望 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() 如果它在最小时间范围内。

一定有更好的方法。

最佳答案

这将触发事件不超过每三秒一次(加上执行 executeFunction() 所需的时间),但如果事件在最后三秒内触发,仍会调用 executeFunction()。这是您要找的吗?

var minimumTime = 3000; // minimum ms between events
var lastFired = null;
var timer;
function myEventHandler(){
var now = new Date().getTime();
clearTimeout(timer);
if(lessThanMinimumTime()){
timer = setTimeout(myEventHandler, lastFired - now + minimumTime);
} else {
executeFunction();
lastFired = now;
}
}

function lessThanMinimumTime(){
if(lastFired == null) return false;
return lastFired > new Date().getTime() - minimumTime;
}

关于javascript - 以最小间隔触发 javascript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com