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

Throttler

Class: Throttler<TFn>

Defined in: throttler.ts:126

A class that creates a throttled function.

Throttling ensures a function is called at most once within a specified time window. Unlike debouncing which waits for a pause in calls, throttling guarantees consistent execution timing regardless of call frequency.

Supports both leading and trailing edge execution:

  • Leading: Execute immediately on first call (default: true)
  • Trailing: Execute after wait period if called during throttle (default: true)

For collapsing rapid-fire events where you only care about the last call, consider using Debouncer.

State Management:

  • Uses TanStack Store for reactive state management
  • Use initialState to provide initial state values when creating the throttler
  • Use onExecute callback to react to function execution and implement custom logic
  • The state includes execution count, last execution time, pending status, and more
  • State can be accessed via throttler.store.state when using the class directly
  • When using framework adapters (React/Solid), state is accessed from throttler.state

Example

ts
const throttler = new Throttler(
  (id: string) => api.getData(id),
  { wait: 1000 } // Execute at most once per second
);

// First call executes immediately
throttler.maybeExecute('123');

// Subsequent calls within 1000ms are throttled
throttler.maybeExecute('123'); // Throttled
const throttler = new Throttler(
  (id: string) => api.getData(id),
  { wait: 1000 } // Execute at most once per second
);

// First call executes immediately
throttler.maybeExecute('123');

// Subsequent calls within 1000ms are throttled
throttler.maybeExecute('123'); // Throttled

Type Parameters

TFn extends AnyFunction

Constructors

new Throttler()

ts
new Throttler<TFn>(fn, initialOptions): Throttler<TFn>
new Throttler<TFn>(fn, initialOptions): Throttler<TFn>

Defined in: throttler.ts:133

Parameters

fn

TFn

initialOptions

ThrottlerOptions<TFn>

Returns

Throttler<TFn>

Properties

options

ts
options: ThrottlerOptions<TFn>;
options: ThrottlerOptions<TFn>;

Defined in: throttler.ts:130


store

ts
readonly store: Store<Readonly<ThrottlerState<TFn>>>;
readonly store: Store<Readonly<ThrottlerState<TFn>>>;

Defined in: throttler.ts:127

Methods

cancel()

ts
cancel(): void
cancel(): void

Defined in: throttler.ts:276

Cancels any pending trailing execution and clears internal state.

If a trailing execution is scheduled (due to throttling with trailing=true), this will prevent that execution from occurring. The internal timeout and stored arguments will be cleared.

Has no effect if there is no pending execution.

Returns

void


flush()

ts
flush(): void
flush(): void

Defined in: throttler.ts:254

Processes the current pending execution immediately

Returns

void


maybeExecute()

ts
maybeExecute(...args): void
maybeExecute(...args): void

Defined in: throttler.ts:204

Attempts to execute the throttled function. The execution behavior depends on the throttler options:

  • If enough time has passed since the last execution (>= wait period):

    • With leading=true: Executes immediately
    • With leading=false: Waits for the next trailing execution
  • If within the wait period:

    • With trailing=true: Schedules execution for end of wait period
    • With trailing=false: Drops the execution

Parameters

args

...Parameters<TFn>

Returns

void

Example

ts
const throttled = new Throttler(fn, { wait: 1000 });

// First call executes immediately
throttled.maybeExecute('a', 'b');

// Call during wait period - gets throttled
throttled.maybeExecute('c', 'd');
const throttled = new Throttler(fn, { wait: 1000 });

// First call executes immediately
throttled.maybeExecute('a', 'b');

// Call during wait period - gets throttled
throttled.maybeExecute('c', 'd');

reset()

ts
reset(): void
reset(): void

Defined in: throttler.ts:287

Resets the throttler state to its default values

Returns

void


setOptions()

ts
setOptions(newOptions): void
setOptions(newOptions): void

Defined in: throttler.ts:147

Updates the throttler options

Parameters

newOptions

Partial<ThrottlerOptions<TFn>>

Returns

void

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.