DanWebb
2/10/2015 - 2:00 AM

Set a waiting period on any number of different actions definable by name and time parameters, returns true if the action can be executed or

Set a waiting period on any number of different actions definable by name and time parameters, returns true if the action can be executed or false if it is being called again within the waiting period.

var wait = (function() {
  var timers = {};
  
  return function(name, time) {
    // if the current timer has not been set yet or it has previously
    // been set but finished it's waiting period
    if(typeof(timers[name])==='undefined' || timers[name]) {
      timers[name] = false;
      setTimeout(function() { timers[name] = true; }, time);
      return true;
    } 

    // The timer hasn't finished it's waiting period
    if(!timers[name])
      return false;
  };
})();

// example usage
$('select').change(function() {
  if(!wait('change', 200))
    return;
      
  // do stuff   
});