debounceWithCancel
创建可取消的防抖函数:延迟窗口内只执行最后一次调用,并支持 cancel() 取消待执行调用。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.setTimeout | typeof setTimeout | 延迟调度 |
deps.clearTimeout | typeof clearTimeout | 清除定时器 |
函数签名
typescript
function debounceWithCancel<T extends (...args: never[]) => void>(
fn: T,
ms: number,
deps: DebounceWithCancelDeps,
): DebouncedWithCancel<T>参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
fn | T | 是 | 原函数 |
ms | number | 是 | 防抖延迟(毫秒) |
deps | DebounceWithCancelDeps | 是 | 定时器依赖 |
返回值
| 类型 | 说明 |
|---|---|
DebouncedWithCancel<T> | 防抖函数,附带 cancel() 方法 |
工作原理
- 每次调用重置定时器。
- 定时器到期后执行原函数。
- 调用
cancel()可清除未执行的调度。