0

当我的代码中的某些函数快速连续执行时,我遇到了问题。我想也许几行 javascript 会阻止触发快乐的人。

所以这就是我希望使用的。

   function change(){
   if(mod == 1 || mod == null){
   var mod=2;
   //function goes here    
   window.setTimeout(function(){var mod=1;}, 500);
   }

有没有一种方法可以做到这一点?

我也觉得应该有一个更全球化的方法来解决这个问题,我没有想到。

4

2 回答 2

0

您可以限制或消除回调。有一个很好的(jQuery 可选)库可以为您包装所有这些:jQuery throttle/debounce

jQuery throttle / debounce 允许您以多种有用的方式对函数进行速率限制。传递延迟和回调以返回一个新函数,该函数每毫秒$.throttle执行不超过一次。delay传递延迟和回调$.debounce返回一个新函数,该函数只执行一次,在开始或结束时将多个顺序调用合并为一个执行。

既然你刚刚评论说你想

禁用该功能,直到经过一段时间

听起来您正在寻找去抖动用例。

于 2012-09-18T01:15:08.213 回答
0

您的解决方案几乎可以工作。您的问题是您没有创建闭包,mod而是创建了另一个mod在 setTimeout 中调用的变量。这应该有效:

   function change(){
     if(mod == 1 || mod == null){
       var mod=2;
       //function goes here    
       window.setTimeout(function(){mod=1;}, 500);
     }
   }
于 2012-09-18T03:06:35.043 回答