我有一个keyup事件绑定到一个需要大约四分之一秒才能完成的函数.
$("#search").keyup(function() {
//code that takes a little bit to complete
});
Run Code Online (Sandbox Code Playgroud)
当用户键入整个单词或快速按下键时,该功能将连续多次调用,并且需要一段时间才能完成.
有没有办法限制事件调用,以便如果有几个快速连续,它只触发最近调用的那个?
我有一个按钮,单击该按钮将启动超时功能,如果在执行该功能之前再次单击该按钮,则希望清除以前的超时,以便可以启动新的超时。
演示代码:
<div id='a'>lorem</div>
$('#a').click(function(){
//code to clear previous timeout
//This is not working: clearTimeout(timeout);
var timeout = setTimeout(function(){
//do something
},5000);
return timeout;
})
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一方法是使timeout全球化,但全球化是丑陋的。
有什么更好的方法吗?在上面的代码中,timeout返回到哪里?我可以在哪个范围内使用它?