Search
 
SCRIPT & CODE EXAMPLE
 

JAVASCRIPT

debounce

function debounce(func, timeout = 300){
  let timer;
  return function(...args) {
    if (timer) {
      clearTimeout(timer);
    }
    
    timer = setTimeout(() => {
      func.apply(this, args);
    }, timeout);
  };
}
Comment

debounce function in javascript

// Add this in HTML
<button id="myid">Click Me</button>

// This is JS Code for debounce function
const debounce = (fn,delay ) => {
  let timeoutID; // Initially undefined
  
  return function(...args){
    
    // cancel previously unexecuted timeouts
    if(timeoutID){
      clearTimeout(timeoutID);
    }
    
    timeoutID = setTimeout( () => {
      fn(...args);
    }, delay)
  }
}


document.getElementById('myid').addEventListener('click', debounce(e => {
  console.log('you clicked me');
}, 2000))
Comment

debounce function

function debounce(func, wait, immediate) {
  // 'private' variable for instance
  // The returned function will be able to reference this due to closure.
  // Each call to the returned function will share this common timer.
  var timeout;

  // Calling debounce returns a new anonymous function
  return function() {
    // reference the context and args for the setTimeout function
    var context = this,
      args = arguments;

    // Should the function be called now? If immediate is true
    //   and not already in a timeout then the answer is: Yes
    var callNow = immediate && !timeout;

    // This is the basic debounce behaviour where you can call this 
    //   function several times, but it will only execute once 
    //   [before or after imposing a delay]. 
    //   Each time the returned function is called, the timer starts over.
    clearTimeout(timeout);

    // Set the new timeout
    timeout = setTimeout(function() {

      // Inside the timeout function, clear the timeout variable
      // which will let the next execution run when in 'immediate' mode
      timeout = null;

      // Check if the function already ran with the immediate flag
      if (!immediate) {
        // Call the original function with apply
        // apply lets you define the 'this' object as well as the arguments 
        //    (both captured before setTimeout)
        func.apply(context, args);
      }
    }, wait);

    // Immediate mode and no wait timer? Execute the function..
    if (callNow) func.apply(context, args);
  }
}

/////////////////////////////////
// DEMO:

function onMouseMove(e){
  console.clear();
  console.log(e.x, e.y);
}

// Define the debounced function
var debouncedMouseMove = debounce(onMouseMove, 50);

// Call the debounced function on every mouse move
window.addEventListener('mousemove', debouncedMouseMove);
 Run code snippet
Comment

PREVIOUS NEXT
Code Example
Javascript :: function prototype in javascript 
Javascript :: multipart/form-data ajax jquery 
Javascript :: check web3 metamask disconnect 
Javascript :: splice method in javascript 
Javascript :: reference of event listener funtion to remove 
Javascript :: Styling React Using CSS 
Javascript :: boucle foreach js 
Javascript :: carbon to moment js conversion 
Javascript :: flatlist only rendering 10 items 
Javascript :: express prisma 
Javascript :: range of numbers in javascript 
Javascript :: mongoose encrypt password 
Javascript :: command to check dependencies in angular 
Javascript :: find duplicate element on array 
Javascript :: accordion reatjs 
Javascript :: what is asynchronous 
Javascript :: console.log() Print Values Stored in Variables 
Javascript :: append javascript example 
Javascript :: Select HTML elements by CSS selectors 
Javascript :: js get class from instance 
Javascript :: c# convert object to json 
Javascript :: show image javascript 
Javascript :: javascript fetch APIjson 
Javascript :: JSX Conditionals: && 
Javascript :: closest js 
Javascript :: vue 3 custom input component 
Javascript :: javascript input value change 
Javascript :: UnhandledPromiseRejectionWarning: TypeError: Converting circular structure to JSON 
Javascript :: nodejs http 
Javascript :: prevent form submit html javascript jquery 
ADD CONTENT
Topic
Content
Source link
Name
1+6 =