Skip to content

Instantly share code, notes, and snippets.

@zeshanshani
Last active August 25, 2019 19:56
Show Gist options
  • Save zeshanshani/c480025dc370fceb81c7b86cb3906e8b to your computer and use it in GitHub Desktop.
Save zeshanshani/c480025dc370fceb81c7b86cb3906e8b to your computer and use it in GitHub Desktop.
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
function debounce( func, wait, immediate ) {
var timeout;
return function () {
var context = this,
args = arguments;
var later = function () {
timeout = null;
if ( !immediate ) func.apply( context, args );
};
var callNow = immediate && !timeout;
clearTimeout( timeout );
timeout = setTimeout( later, wait );
if ( callNow ) func.apply( context, args );
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment