From 12428f8bd1d3de25122ba85078aa719a26cc4bfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E4=BA=9A=E6=98=95?= <1549469775@qq.com> Date: Tue, 25 Feb 2025 10:09:46 +0800 Subject: [PATCH] fix bug --- package.json | 2 +- packages/core/src/index.ts | 1 + packages/core/src/throttle/docs/demo.vue | 19 +++++++++++++++++++ packages/core/src/throttle/docs/index.md | 9 +++++++++ packages/core/src/throttle/index.ts | 17 +++++++++++++++++ vitest.shared.ts | 13 ++++++++++--- 6 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 packages/core/src/throttle/docs/demo.vue create mode 100644 packages/core/src/throttle/docs/index.md create mode 100644 packages/core/src/throttle/index.ts diff --git a/package.json b/package.json index 2a0a4ca..785ff11 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "docs:serve": "vitepress serve packages", "test": "tsx scripts/test.mts", "test:ui": "vitest --ui", - "coverage": "vitest run --coverage", + "coverage": "vitest run --coverage --config ./vitest.shared.ts", "changeset:add": "changeset add", "changeset:version": "changeset version", "changeset:publish": "changeset publish", diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index e178329..92b04df 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,3 +1,4 @@ export * from "./date"; export * from "./common"; export * from "./debounce"; +export * from "./throttle"; diff --git a/packages/core/src/throttle/docs/demo.vue b/packages/core/src/throttle/docs/demo.vue new file mode 100644 index 0000000..38cd547 --- /dev/null +++ b/packages/core/src/throttle/docs/demo.vue @@ -0,0 +1,19 @@ + + + diff --git a/packages/core/src/throttle/docs/index.md b/packages/core/src/throttle/docs/index.md new file mode 100644 index 0000000..6e591f9 --- /dev/null +++ b/packages/core/src/throttle/docs/index.md @@ -0,0 +1,9 @@ +--- +title: 节流 +category: 工具 +--- + + + +当频繁点击时,每一秒执行一次 + diff --git a/packages/core/src/throttle/index.ts b/packages/core/src/throttle/index.ts new file mode 100644 index 0000000..d14937d --- /dev/null +++ b/packages/core/src/throttle/index.ts @@ -0,0 +1,17 @@ +export function throttle(fn: (...argu: T) => R, interval: number = 200) { + let last; + let timer: ReturnType | void; + return function (this: void, ...argu: T) { + const now = +new Date(); + if (last && now - last < interval) { + timer && clearTimeout(timer); + timer = setTimeout(() => { + last = now; + fn.apply(this, argu); + }, interval); + } else { + last = now; + fn.apply(this, argu); + } + }; +} diff --git a/vitest.shared.ts b/vitest.shared.ts index b9fabbb..c65aa2d 100644 --- a/vitest.shared.ts +++ b/vitest.shared.ts @@ -1,4 +1,4 @@ -import { configDefaults, defineConfig } from "vitest/config"; +import { configDefaults, defineConfig, coverageConfigDefaults } from "vitest/config"; import { resolve } from "path"; const src = "src"; @@ -22,8 +22,15 @@ export default defineConfig({ coverage: { provider: "v8", enabled: true, - all: false, - include: ["packages/browser/src/**"] + include: [ + "packages/vue3/src/**", + "packages/browser/src/**", + "packages/shared/src/**", + "packages/core/src/**", + "packages/node/src/**", + "packages/xyx-utils/src/**", + ], + exclude: [...coverageConfigDefaults.exclude, "packages/**/docs/**", "packages/**\/test?(s)/**"] }, }, });