JavaScript

debounce

Delay function calls until a set time elapses after the last invocation

S

sindresorhus

Dernière activité 18 sept. 2026
sindresorhus/debounce

851

étoiles

75

forks

0

issues ouvertes

Ce README est souvent en anglais.

debounce

Delay function calls until a set time elapses after the last invocation

Install

npm install debounce

Usage

import debounce from 'debounce';

function resize() {
	console.log('height', window.innerHeight);
	console.log('width', window.innerWidth);
}

window.onresize = debounce(resize, 200);

To check if the debounce delay is currently active:

window.onresize.isPending;

To later clear the timer and cancel currently scheduled executions:

window.onresize.clear();

Execute immediately only if a call is pending (and reset the timer):

window.onresize.flush();

To execute immediately and reset the timer if it was previously set:

window.onresize.trigger();

API

debounce(fn, wait, options?)

Creates a debounced function that delays execution until wait milliseconds have passed since its last invocation.

Set the immediate option to true to execute the function immediately at the start of the wait interval, preventing issues such as double-clicks on a button.

The returned function has the following methods:

  • .isPending indicates whether the debounce delay is currently active.
  • .clear() cancels any scheduled executions.
  • .flush() if an execution is scheduled then it will be immediately executed and the timer will be cleared.
  • .trigger() executes the function immediately and clears the timer if it was previously set.
  • debounce-fn - Similar but with more options like maxWait and before/after
  • p-debounce - Similar but handles promises
  • throttleit - Throttle a function to limit its execution rate

Projets similaires

Debounce promise-returning & async functions

JavaScript
Ssindresorhus
238 étoiles26

Delay a promise a specified amount of time

JavaScript
Ssindresorhus
623 étoiles37

Debounce promise-returning & async functions.

TypeScript
Uunjs
342 étoiles12