diff --git a/packages/core/src/debounce/index.ts b/packages/core/src/debounce/index.ts new file mode 100644 index 0000000..ac72091 --- /dev/null +++ b/packages/core/src/debounce/index.ts @@ -0,0 +1,12 @@ +export function debounce(fn: (...argu: T) => R, duration: number = 1500) { + let timer: ReturnType | void; + return function f(this: void, ...argu: T) { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(() => { + timer = undefined; + fn.apply(this, argu); + }, duration); + }; +} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 8a22d87..f183ae9 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1 +1,2 @@ export * from "./date"; +export * from "./debounce";