From 675f62b881517cafd578703b93ec4911ccdccedd Mon Sep 17 00:00:00 2001 From: halo <825251234@qq.com> Date: Fri, 14 Jan 2022 16:30:26 +0800 Subject: [PATCH] add throttle for slider --- src/module/slider/index.vue | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/module/slider/index.vue b/src/module/slider/index.vue index 805a264c..531ab440 100644 --- a/src/module/slider/index.vue +++ b/src/module/slider/index.vue @@ -149,10 +149,24 @@ const vertical_style = reactive({ height: props.modelValue, }); +function throttle(func: Function) { + let timer: any = null; + return function (args: any) { + if (!timer) { + timer = setTimeout(() => { + timer = null; + func(args); + }, 60); + } + }; +} +const moveAction = throttle(handle_mousemove); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars function handle_mousedown() { on("selectstart", window, handle_select, { once: true }); on("mouseup", window, handle_mouseup); - on("mousemove", window, handle_mousemove); + on("mousemove", window, moveAction); } function handle_mousemove(e: MouseEvent) { @@ -179,7 +193,7 @@ function handle_mousemove(e: MouseEvent) { function handle_mouseup() { // off('selectstart', document, handle_select) off("mouseup", window, handle_mouseup); - off("mousemove", window, handle_mousemove); + off("mousemove", window, moveAction); } function handle_select(e: Event): void {