How to use a Debounce function in JavaScript
Table of Contents
If an event is particularly slow to occur, you can use a debounce function to prevent it from firing too often.
This can limit the number of times the event can trigger and therefore improve overall performance.
In this post, we'll take a look at how to use a debounce function in JavaScript.
How to use a debounce function
First, let's start off with an example event that fires often and can be taxing to execute:
JAVASCRIPTwindow.addEventListener("scroll", () => {
console.log("Expensive scroll event");
});
With this event listener registered, every time the user scrolls the page, the event will fire.
Let's now wrap this in a debounce function.
A debounce function is a higher-order function that will take your desired function as a parameter and return a new function that is controlled by a timeout.
Let'see our debounce function:
JAVASCRIPTconst debounce = (callback, delay) => {
let timeout;
return function debounced(...args) {
clearTimeout(timeout);
timeout = setTimeout(() => {
clearTimeout(timeout);
callback(...args);
}, delay);
};
};
Now let's use these together:
JAVASCRIPTconst debounce = (callback, delay) => {
let timeout;
return function debounced(...args) {
clearTimeout(timeout);
timeout = setTimeout(() => {
clearTimeout(timeout);
callback(...args);
}, delay);
};
};
const debouncedScroll = debounce(() => {
console.log("Expensive scroll event");
}, 1000);
window.addEventListener("scroll", debouncedScroll);
Now every time the user scrolls the page, the event will only fire after 1 second has passed, instead of every time the user scrolls.
Conclusion
In this post, we've covered how to use a debounce function in JavaScript.
Simply pass in a callback function and a delay in milliseconds to your debounce function and it will return a new function that will only fire after the delay has passed.
Thanks for reading!
- How to Install Node on Windows, macOS and Linux
- Managing PHP Dependencies with Composer
- Getting Started with Express
- Getting Started with Electron
- How to deploy a .NET app using Docker
- How to deploy a PHP app using Docker
- How to deploy a Deno app using Docker
- How to deploy a MySQL Server using Docker
- Getting Started with Sass
- Getting User Location using JavaScript's Geolocation API
- Getting Started with React
- Setting Up a Local Web Server using Node.js