From 8ed0a2f0d2c143a1945e862182a6cb4abddccdad Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Mon, 29 Apr 2024 10:30:26 +0800
Subject: [PATCH] 下拉选择组件跳转优化,交由业务层跳转URL

---
 common/Tools.js |   40 +++++++++++++++++++---------------------
 1 files changed, 19 insertions(+), 21 deletions(-)

diff --git a/common/Tools.js b/common/Tools.js
index 624297d..e9d1edb 100644
--- a/common/Tools.js
+++ b/common/Tools.js
@@ -542,42 +542,40 @@
      * @param {Function} fnc
      * @param {Number} wait
      * @returns {Function}
+     * @tutorial Tools.debounce(<fnc>, <wait>)(<DebounceKey>)
      */
     static debounce(fnc, wait = 200) {
-        let timeout = null;
-        return function() {
-            const context = this;
-            const args = arguments;
-            if (timeout) {
-                clearTimeout(timeout);
+        return key => {
+            if (!key || !Tools.isString(key)) {
+                throw 'Debounce function need a key!';
             }
-            const callNow = !timeout;
-            timeout = setTimeout(() => {
-                timeout = null;
-            }, wait);
-            if (callNow) {
-                fnc.apply(context, args);
+            const timer = Tools.debounce['dKey-' + key];
+            if (timer) {
+                clearTimeout(timer);
             }
+            Tools.debounce['dKey-' + key] = setTimeout(fnc, wait);
         };
     }
 
     /**
-     * 节流函数(一段时间周期内,仅执行第一次回调)
+     * 节流函数(本段时间内,仅执行第一次回调)
      *  在一定时间内只能触发一次函数执行
      *  如果这个时间内再次触发,则忽略,直到下一个时间段再次触发
      * @param {Function} fnc
      * @param {Number} wait
-     * @returns {Function}
+     * @returns {function(key):void}
+     * @tutorial Tools.throttle(<fnc>, <wait>)(<ThrottleKey>)
      */
     static throttle(fnc, wait = 200) {
-        let previous = 0;
-        return function() {
-            const context = this;
-            const args = arguments;
-            const now = new Date();
+        return key => {
+            if (!key || !Tools.isString(key)) {
+                throw 'Throttle function need a key!';
+            }
+            const previous = Tools.throttle['tKey-' + key] || 0;
+            const now = Date.now();
             if (now - previous > wait) {
-                fnc.apply(context, args);
-                previous = now;
+                Tools.throttle['tKey-' + key] = now;
+                fnc();
             }
         };
     }

--
Gitblit v1.9.1