Javascript 清除处于活动状态的超时
我有一个jqueryajax,其中使用setTimeout。有时,用户会在setTimeout启动之前多次触发ajax 因此,是否可以通过添加如下clearTimeout来清除先前触发的setTimeout的活动版本:Javascript 清除处于活动状态的超时,javascript,jquery,Javascript,Jquery,我有一个jqueryajax,其中使用setTimeout。有时,用户会在setTimeout启动之前多次触发ajax 因此,是否可以通过添加如下clearTimeout来清除先前触发的setTimeout的活动版本: clearTimeout(time); var time = setTimeout(function() { $('#hello').fadeOut(); },2600); 或者我需要添加某种形式的全局变量?根据您所做的操作,您可能希望在第一次单击时执行操作并忽略后续的
clearTimeout(time);
var time = setTimeout(function() {
$('#hello').fadeOut();
},2600);
或者我需要添加某种形式的全局变量?根据您所做的操作,您可能希望在第一次单击时执行操作并忽略后续的单击,直到第一次单击完成,或者您希望重置计时器,并且仅在最后一次单击后2.6秒执行操作。。。我举了两个例子,如果有什么需要澄清,请告诉我 作用{ let time,btn=document.getElementById'btn1'; btn.onclick=函数{ 如果时间为clearTimeouttime; 时间=设置时间输出功能{ 什么臭味?!; }, 2600; } }; 作用{ let time,btn=document.getElementById'btn2'; btn.onclick=函数{ 如果时间回来了; 时间=设置时间输出功能{ 什么是屁股?!; 时间=零; }, 2600; }; }; 只对最后一次按下做出反应
只对第一次按下做出反应这里有一个快速的例子,它回答了你的问题,并说明了关闭的奇迹
document.getElementById('inputBox').addEventListener('keyup', Delay());
function MyFunction(){
console.log(this.value);
}
function Delay(){
var timer = 0;
return function(){
clearTimeout(timer);
timer = setTimeout(MyFunction.bind(this), 1000);
}
}
是的,如果你在更高的范围内宣布时间,你用最后一句话自己回答了问题@请详细说明。如何在我的例子中添加全局变量?明白了,明白了!让我来测试一下这个坏孩子。@Rorymcrossan我把var time=;在ajax函数之外,也在我的JS文件的最顶端,clearTimeout仍然没有取消。你有进一步的意见吗?