我的代码中的某些函数快速连续执行时出现问题。我想也许几行javascript会阻止触发快乐的人。
所以这就是我希望使用的内容。
function change(){
if(mod == 1 || mod == null){
var mod=2;
//function goes here
window.setTimeout(function(){var mod=1;}, 500);
}
有没有办法实现这个目的?
我也觉得应该采用一种更全面的方法来解决这个问题。
答案 0 :(得分:0)
您可以限制或去抖回调。有一个很好的(jQuery可选)库可以为你包装所有这些:jQuery throttle/debounce。
jQuery throttle / debounce允许您以多种有用的方式对功能进行速率限制。将延迟和回调传递给
$.throttle
会返回一个新函数,该函数每delay
毫秒执行一次不超过一次。将延迟和回调传递给$.debounce
会返回一个只执行一次的新函数,将多个顺序调用合并为一个执行的开始或结束。
因为您刚评论过想要
禁用该功能,直到一段时间过去
听起来你正在寻找 debounce 用例。
答案 1 :(得分:0)
您的解决方案几乎可行。您的问题是您没有为mod
创建闭包,而是在setTimeout中创建另一个名为mod
的变量。这应该有效:
function change(){
if(mod == 1 || mod == null){
var mod=2;
//function goes here
window.setTimeout(function(){mod=1;}, 500);
}
}