Files
nysoure/frontend/src/utils/debounce.ts
2025-07-31 15:41:15 +08:00

25 lines
431 B
TypeScript

export class Debounce {
private timer: number | null = null;
private readonly delay: number;
constructor(delay: number) {
this.delay = delay;
}
run(callback: () => void) {
if (this.timer) {
clearTimeout(this.timer);
}
this.timer = setTimeout(() => {
callback();
}, this.delay);
}
cancel() {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
}
}