Javascript 清除处于活动状态的超时

Javascript 清除处于活动状态的超时,javascript,jquery,Javascript,Jquery,我有一个jqueryajax,其中使用setTimeout。有时,用户会在setTimeout启动之前多次触发ajax 因此,是否可以通过添加如下clearTimeout来清除先前触发的setTimeout的活动版本: clearTimeout(time); var time = setTimeout(function() { $('#hello').fadeOut(); },2600); 或者我需要添加某种形式的全局变量?根据您所做的操作,您可能希望在第一次单击时执行操作并忽略后续的

我有一个jqueryajax,其中使用setTimeout。有时,用户会在setTimeout启动之前多次触发ajax

因此,是否可以通过添加如下clearTimeout来清除先前触发的setTimeout的活动版本:

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仍然没有取消。你有进一步的意见吗?