我执行了以下操作:允许单击处理程序在单击后立即执行。但是,连续单击将根本不允许处理程序触发。这里的“连续”是从我上次click
开始测量的。我想测量从上一次执行click
处理程序开始的时间。我在考虑类似startTime
函数的方法,该函数可以测量自从执行上一个click
处理程序以来经过的时间。有这样的功能吗?如果没有,您有什么建议?
我的代码:
let tdnTimeoutStatus;
let tdnStatus = true;
$('#toggleDepositNote').click(function() {
if (tdnStatus) {
toggleDepositNote();
tdnStatus = false;
}
if (tdnTimeoutStatus)
clearTimeout(tdnTimeoutStatus);
tdnTimeoutStatus = setTimeout(function() {
tdnStatus = true;
}, 250);
});
答案 0 :(得分:0)
经过深思熟虑,我实际上不需要测量从事件处理程序上次触发以来的时间。取而代之的是,我只需要setTimeout
即可使处理程序在最后一个处理程序之后的指定时间后再次触发。
我将上面的代码更改为以下代码:
let allowHandler;
let tdnStatus = true;
$('#toggleDepositNote').click(function() {
if (tdnStatus) {
toggleDepositNote();
tdnStatus = false;
allowHandler = setTimeout(function() {
tdnStatus = true;
}, 300);
}
}
但是,我欢迎更优雅的解决方案。