【发布时间】:2021-07-02 06:28:21
【问题描述】:
我正在寻找一种调用函数的方法,该函数应在执行前等待 1000 毫秒。并且当在达到 1000 毫秒之前再次调用该函数时,计时器应该重新启动。以便该函数在 最后一次被调用后 1000 毫秒运行。
假设我有一个按钮:
<button type="button" id="btnclick">Click Me!</button>
我想在最后一次被点击后恰好 1000 毫秒后显示一个警报。但是当第二次单击按钮时,在 1000 毫秒过去之前,计时器应该重新启动。
- 如果有人单击按钮 1 次,则在单击后 1 秒显示警报。
- 如果有人单击按钮,然后在 999 毫秒后再次单击,然后在 999 毫秒后再次单击,那么我想在最后一次单击后 1 秒运行该功能(即第一次单击后 2.98 秒)。
这可能吗?如何? 我最好的猜测是:
function delay(callback, ms) {
var timer = 0;
return function () {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
callback.apply(context, args);
}, ms || 0);
};
}
$('#btnclick').click(function(e){
console.log('I want to see this everytime the button is clicked, without any delay');
delay(waitFunction(),1000);
});
function waitFunction(){
console.log('I want to see this 1 second after the LAST click');
}
【问题讨论】:
标签: javascript jquery timer