Skip to content

@pmun/utils / debounce

Function: debounce()

ts
function debounce<T, R>(fn, wait): (...args) => Promise<R>;

创建一个防抖函数(异步版本)

在指定的延迟时间内,如果函数被多次调用,只执行最后一次。 返回一个 Promise,会在函数实际执行后 resolve。

Type Parameters

T

T extends any[]

R

R

Parameters

fn

(...args) => R | Promise<R>

要防抖的函数

wait

number

延迟时间(毫秒)

Returns

防抖后的函数

ts
(...args): Promise<R>;

Parameters

args

...T

Returns

Promise<R>

Example

ts
const searchAPI = debounce(async (query: string) => {
  const response = await fetch(`/api/search?q=${query}`)
  return response.json()
}, 300)

// 只有最后一次调用会实际执行
searchAPI('a')
searchAPI('ab')
const result = await searchAPI('abc') // 只有这次会执行