DEV Community

Cover image for Debounce in JavaScript
Jakaria Masum
Jakaria Masum

Posted on

Debounce in JavaScript

Have you ever typed in a search bar and noticed that results don’t appear instantly with every keystroke, but only after you stop typing for a second? That smooth behavior is often made possible using something called debounce.

In this blog, we'll break down what debounce is, why it's useful, and how to use it with a clear JavaScript example.


What is Debounce?

Debounce is a technique used to limit how often a function is executed.

In simple terms:

Debounce waits for a pause in a series of events before running a function.


Why Use Debounce?

Imagine you have an input box that sends a search request to the server every time you type a letter.

Without debounce:

  • Typing “food” = 4 API calls (one for each letter)

With debounce:

  • Typing “food” quickly = 1 API call (after you stop typing)

This saves bandwidth, avoids unnecessary processing, and improves performance.


Real-Life Examples

  • Live search boxes
  • Window resizing
  • Scroll event listeners
  • Form validations as you type

How Debounce Works — Step by Step

Let’s say you type something quickly:

f → o → o → d
Enter fullscreen mode Exit fullscreen mode

With debounce:

  • Every time you type, the timer resets.
  • Only after you stop typing for X milliseconds, the function runs.

Debounce Example in JavaScript

Here’s a simple debounce function:

function debounce(func, delay) {
  let timeoutId;

  return function (...args) {
    clearTimeout(timeoutId); // Cancel the previous timer
    timeoutId = setTimeout(() => {
      func.apply(this, args); // Run the function after delay
    }, delay);
  };
}
Enter fullscreen mode Exit fullscreen mode

Let’s apply it:

function handleSearch(event) {
  console.log("Searching for:", event.target.value);
}

const debouncedSearch = debounce(handleSearch, 500);

document.getElementById("search").addEventListener("input", debouncedSearch);
Enter fullscreen mode Exit fullscreen mode

Now handleSearch will only run 500ms after the user stops typing.


Visual Summary

[User types] f o o d
[Debounce resets timer on each key]
[Wait 500ms of no typing] → Run search once
Enter fullscreen mode Exit fullscreen mode

Analogy: Pressing Elevator Button

Think of debounce like this:

  • You press the elevator button multiple times (input events).
  • The elevator only responds after you stop pressing for a while.
  • Pressing more quickly resets the timer.

Debounce is a powerful, simple concept:

  • It helps you avoid running functions too often.
  • It improves app performance and user experience.

Next time you're working with input boxes, scroll events, or anything frequent — consider using debounce.


Top comments (0)