@fast-china/utils
Version:
Fast 工具库.
1 lines • 3.75 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../src/click/index.ts"],"sourcesContent":["let _debounceTimeout: ReturnType<typeof setTimeout> | null = null;\nlet _throttleRunning = false;\n\n/**\n * 点击工具类\n */\nexport const clickUtil = {\n\t/**\n\t * 防抖\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的防抖函数\n\t */\n\tdebounce(fn: () => void, delay = 500): void {\n\t\t// 如果已有定时器,清除它\n\t\tif (_debounceTimeout) {\n\t\t\tclearTimeout(_debounceTimeout);\n\t\t}\n\t\t// 设置新的定时器\n\t\t_debounceTimeout = setTimeout(() => {\n\t\t\t// 调用原函数\n\t\t\tfn();\n\t\t}, delay);\n\t},\n\t/**\n\t * 异步防抖\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的防抖函数\n\t */\n\tasync debounceAsync(fn: () => Promise<void>, delay = 500): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// 清除已有定时器\n\t\t\tif (_debounceTimeout) {\n\t\t\t\tclearTimeout(_debounceTimeout);\n\t\t\t}\n\t\t\t// 设置新的定时器\n\t\t\t_debounceTimeout = setTimeout(async () => {\n\t\t\t\ttry {\n\t\t\t\t\t// 调用异步函数 fn\n\t\t\t\t\tawait fn();\n\t\t\t\t\tresolve();\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t}, delay);\n\t\t});\n\t},\n\t/**\n\t * 节流\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的节流函数\n\t */\n\tthrottle(fn: () => void, delay = 500): void {\n\t\t// 如果节流操作正在运行,直接返回\n\t\tif (_throttleRunning) {\n\t\t\treturn;\n\t\t}\n\t\t// 设置节流状态为运行\n\t\t_throttleRunning = true;\n\t\t// 调用原函数\n\t\tfn();\n\t\t// 设置定时器以重置节流状态\n\t\tsetTimeout(() => {\n\t\t\t_throttleRunning = false;\n\t\t}, delay);\n\t},\n\t/**\n\t * 异步节流\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的节流函数\n\t */\n\tasync throttleAsync(fn: () => Promise<void>, delay = 500): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// 如果节流操作正在进行,直接返回\n\t\t\tif (_throttleRunning) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// 设置节流状态为运行\n\t\t\t_throttleRunning = true;\n\t\t\t// 调用原函数\n\t\t\tfn()\n\t\t\t\t.then(() => {\n\t\t\t\t\tresolve();\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\t// 设置定时器以重置节流状态\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t_throttleRunning = false;\n\t\t\t\t\t}, delay);\n\t\t\t\t});\n\t\t});\n\t},\n};\n"],"names":[],"mappings":"AAAA,IAAI,mBAAyD;AAC7D,IAAI,mBAAmB;AAKhB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOxB,SAAS,IAAgB,QAAQ,KAAW;AAE3C,QAAI,kBAAkB;AACrB,mBAAa,gBAAgB;AAAA,IAAA;AAG9B,uBAAmB,WAAW,MAAM;AAEhC,SAAA;AAAA,OACD,KAAK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,IAAyB,QAAQ,KAAoB;AACxE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvC,UAAI,kBAAkB;AACrB,qBAAa,gBAAgB;AAAA,MAAA;AAG9B,yBAAmB,WAAW,YAAY;AACrC,YAAA;AAEH,gBAAM,GAAG;AACD,kBAAA;AAAA,iBACA,OAAO;AACf,iBAAO,KAAK;AAAA,QAAA;AAAA,SAEX,KAAK;AAAA,IAAA,CACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,IAAgB,QAAQ,KAAW;AAE3C,QAAI,kBAAkB;AACrB;AAAA,IAAA;AAGkB,uBAAA;AAEhB,OAAA;AAEH,eAAW,MAAM;AACG,yBAAA;AAAA,OACjB,KAAK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,IAAyB,QAAQ,KAAoB;AACxE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvC,UAAI,kBAAkB;AACrB;AAAA,MAAA;AAGkB,yBAAA;AAEhB,SAAA,EACD,KAAK,MAAM;AACH,gBAAA;AAAA,MAAA,CACR,EACA,MAAM,CAAC,UAAU;AACjB,eAAO,KAAK;AAAA,MAAA,CACZ,EACA,QAAQ,MAAM;AAEd,mBAAW,MAAM;AACG,6BAAA;AAAA,WACjB,KAAK;AAAA,MAAA,CACR;AAAA,IAAA,CACF;AAAA,EAAA;AAEH;"}