Framework
Version
Debouncer API Reference
Throttler API Reference
Rate Limiter API Reference
Queue API Reference
Batcher API Reference

debounce

Function: debounce()

ts
function debounce<TFn>(fn, initialOptions): (...args) => void
function debounce<TFn>(fn, initialOptions): (...args) => void

Defined in: debouncer.ts:286

Creates a debounced function that delays invoking the provided function until after a specified wait time. Multiple calls during the wait period will cancel previous pending invocations and reset the timer.

This the the simple function wrapper implementation pulled from the Debouncer class. If you need more control over the debouncing behavior, use the Debouncer class directly.

If leading option is true, the function will execute immediately on the first call, then wait the delay before allowing another execution.

State Management:

  • Uses TanStack Store for reactive state management
  • Use initialState to provide initial state values when creating the debouncer
  • Use onExecute callback to react to function execution and implement custom logic
  • The state includes canLeadingExecute, execution count, and isPending status
  • State can be accessed via the underlying Debouncer instance's store.state property
  • When using framework adapters (React/Solid), state is accessed from the hook's state property

Type Parameters

TFn extends AnyFunction

Parameters

fn

TFn

initialOptions

DebouncerOptions<TFn>

Returns

Function

Parameters

args

...Parameters<TFn>

Returns

void

Example

ts
const debounced = debounce(() => {
  saveChanges();
}, { wait: 1000 });

// Called repeatedly but executes at most once per second
inputElement.addEventListener('input', debounced);
const debounced = debounce(() => {
  saveChanges();
}, { wait: 1000 });

// Called repeatedly but executes at most once per second
inputElement.addEventListener('input', debounced);
Our Partners
Unkey
Subscribe to Bytes

Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.

Bytes

No spam. Unsubscribe at any time.

Subscribe to Bytes

Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.

Bytes

No spam. Unsubscribe at any time.