Skip to content

Debounce Service

A Service for creating debounced functions with manual control over execution and cancellation. Perfect for optimizing performance in scenarios like search inputs, API calls, and event handlers.

Features

  • Manual Control: Explicit run() and cancel() methods for fine-grained control
  • Memory Efficient: Proper cleanup of timers
  • Flexible: Works with any callback function

Service Reference

Types

typescript
type DebounceHandler<T = void> = {
  run: (arg?: T) => void;
  cancel: () => void;
};

createDebounce

Creates a debounced handler with manual control over execution and cancellation.

typescript
const createDebounce = <T = void>(
    callback: (arg?: T) => void,
    delay: number
): DebounceHandler<T>;

Parameters

ParameterTypeDescription
callback(arg?: T) => voidThe function to be debounced, optionally receiving an argument
delaynumberThe delay in milliseconds before execution

Returns

DebounceHandler<T> - An object with run and cancel methods

  • run(arg?: T): Starts or restarts the debounce timer. You can optionally pass an argument which will be provided to the callback when executed.
  • cancel(): Cancels the pending execution and clears the timer

Usage Examples

Without arguments

vue
<template>
  <input type="text" @input="debounce.run()" placeholder="Type something..." />
  <button @click="debounce.cancel()" class="btn">Stop Debounce</button>
</template>

<script setup lang="ts">
import CreateDebounce from "dolphin-components";

const debounce = CreateDebounce(() => {
  alert("Debounced function executed!");
}, 3000);
</script>

With arguments

vue
<template>
  <input
    type="text"
    @input="(e) => debounce.run(e.target.value)"
    placeholder="Type something..."
  />
  <button @click="debounce.cancel()" class="btn">Stop Debounce</button>
</template>

<script setup lang="ts">
import CreateDebounce from "dolphin-components";

const debounce = CreateDebounce<string>((inputValue) => {
  alert(`Debounced function executed with input: ${inputValue}`);
}, 3000);
</script>

Common Use Cases

  • Search Inputs: Debounce search queries as user types
  • API Calls: Prevent rapid-fire requests
  • Validation: Delay validation until user finishes input

Best Practices

  1. Choose Appropriate Delays
  2. Always Cancel on Cleanup: Prevent memory leaks by canceling debounced functions when components unmount
  3. Handle Edge Cases: Check for empty inputs or invalid states before execution