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)