框架
版本
Debouncer API Reference
Throttler API Reference
Rate Limiter API Reference
Queue API Reference

AsyncDebouncer

Class: AsyncDebouncer<TFn>

Defined in: async-debouncer.ts:77

A class that creates an async debounced function.

Debouncing ensures that a function is only executed after a specified delay has passed since its last invocation. Each new invocation resets the delay timer. This is useful for handling frequent events like window resizing or input changes where you only want to execute the handler after the events have stopped occurring.

Unlike throttling which allows execution at regular intervals, debouncing prevents any execution until the function stops being called for the specified delay period.

Unlike the non-async Debouncer, this async version supports returning values from the debounced function, making it ideal for API calls and other async operations where you want the result of the maybeExecute call instead of setting the result on a state variable from within the debounced function.

Example

ts
const asyncDebouncer = new AsyncDebouncer(async (value: string) => {
  const results = await searchAPI(value);
  return results; // Return value is preserved
}, { wait: 500 });

// Called on each keystroke but only executes after 500ms of no typing
// Returns the API response directly
const results = await asyncDebouncer.maybeExecute(inputElement.value);
const asyncDebouncer = new AsyncDebouncer(async (value: string) => {
  const results = await searchAPI(value);
  return results; // Return value is preserved
}, { wait: 500 });

// Called on each keystroke but only executes after 500ms of no typing
// Returns the API response directly
const results = await asyncDebouncer.maybeExecute(inputElement.value);

Type Parameters

TFn extends AnyAsyncFunction

Constructors

new AsyncDebouncer()

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

Defined in: async-debouncer.ts:90

Parameters

fn

TFn

initialOptions

AsyncDebouncerOptions<TFn>

Returns

AsyncDebouncer<TFn>

Methods

cancel()

ts
cancel(): void
cancel(): void

Defined in: async-debouncer.ts:199

Cancels any pending execution or aborts any execution in progress

Returns

void


getErrorCount()

ts
getErrorCount(): number
getErrorCount(): number

Defined in: async-debouncer.ts:228

Returns the number of times the function has errored

Returns

number


getIsExecuting()

ts
getIsExecuting(): boolean
getIsExecuting(): boolean

Defined in: async-debouncer.ts:242

Returns true if there is currently an execution in progress

Returns

boolean


getIsPending()

ts
getIsPending(): boolean
getIsPending(): boolean

Defined in: async-debouncer.ts:235

Returns true if there is a pending execution queued up for trailing execution

Returns

boolean


getLastResult()

ts
getLastResult(): undefined | ReturnType<TFn>
getLastResult(): undefined | ReturnType<TFn>

Defined in: async-debouncer.ts:207

Returns the last result of the debounced function

Returns

undefined | ReturnType<TFn>


getOptions()

ts
getOptions(): Required<AsyncDebouncerOptions<TFn>>
getOptions(): Required<AsyncDebouncerOptions<TFn>>

Defined in: async-debouncer.ts:116

Returns the current debouncer options

Returns

Required<AsyncDebouncerOptions<TFn>>


getSettleCount()

ts
getSettleCount(): number
getSettleCount(): number

Defined in: async-debouncer.ts:221

Returns the number of times the function has settled (completed or errored)

Returns

number


getSuccessCount()

ts
getSuccessCount(): number
getSuccessCount(): number

Defined in: async-debouncer.ts:214

Returns the number of times the function has been executed successfully

Returns

number


maybeExecute()

ts
maybeExecute(...args): Promise<undefined | ReturnType<TFn>>
maybeExecute(...args): Promise<undefined | ReturnType<TFn>>

Defined in: async-debouncer.ts:124

Attempts to execute the debounced function If a call is already in progress, it will be queued

Parameters

args

...Parameters<TFn>

Returns

Promise<undefined | ReturnType<TFn>>


setOptions()

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

Defined in: async-debouncer.ts:104

Updates the debouncer options Returns the new options state

Parameters

newOptions

Partial<AsyncDebouncerOptions<TFn>>

Returns

void

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.