Delay is set to 1000ms for this demo.

Button clicked: 0

Event handler called: 0


Debounce execution of a function.

Debounce is an overloaded waiter: if you keep asking him your requests will be ignored until you stop and give him some time to think about your latest inquiry.


import { useDebounceFn } from '@vueuse/core'

const debouncedFn = useDebounceFn(() => {
  // do something
}, 1000)

document.addEventLisenter('resize', debouncedFn)
  • useThrottle
  • useThrottleFn
  • useDebounce
  • useDebounceFn

Type Declarations

 * Debounce execution of a function.
 * @param  fn          A function to be executed after delay milliseconds debounced.
 * @param  ms          A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
 * @return A new, debounce, function.
export declare function useDebounceFn<T extends FunctionArgs>(
  fn: T,
  ms?: MaybeRef<number>
): T