@fast-china/utils
Version:
Fast 工具库.
1 lines • 3.43 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":["_debounceTimeout","_throttleRunning","clickUtil","debounce","fn","delay","clearTimeout","setTimeout","async","Promise","resolve","reject","error","throttle","then","catch","finally"],"mappings":"AAAA,IAAIA,EAAyD,KACzDC,GAAmB,EAKhB,MAAMC,EAAY,CAOxB,QAAAC,CAASC,EAAgBC,EAAQ,KAE5BL,GACHM,aAAaN,GAGdA,EAAmBO,WAAW,KAE7BH,KACEC,EACJ,EAOAG,cAAM,MAAcJ,EAAyBC,EAAQ,MAC7C,IAAII,QAAQ,CAACC,EAASC,KAExBX,GACHM,aAAaN,GAGdA,EAAmBO,WAAWC,UAC7B,UAEOJ,IACNM,GACD,OAASE,GACRD,EAAOC,EACR,GACEP,KASL,QAAAQ,CAAST,EAAgBC,EAAQ,KAE5BJ,IAIJA,GAAmB,EAEnBG,IAEAG,WAAW,KACVN,GAAmB,GACjBI,GACJ,EAOAG,cAAM,MAAcJ,EAAyBC,EAAQ,MAC7C,IAAII,QAAQ,CAACC,EAASC,KAExBV,IAIJA,GAAmB,EAEnBG,IACEU,KAAK,KACLJ,MAEAK,MAAOH,IACPD,EAAOC,KAEPI,QAAQ,KAERT,WAAW,KACVN,GAAmB,GACjBI"}