鸿蒙 next -arkts-实现防抖节流功能
ClickUtil
export class ClickUtil {
private constructor() {
}
private static throttleTimeoutID: number;
private static flag: boolean = false;
private static debounceCacheID: number;
static throttle(func: () => void, wait: number = 1000, immediate: boolean = true) {
if (immediate) {
if (!ClickUtil.flag) {
ClickUtil.flag = true;
typeof func === 'function' && func();
ClickUtil.throttleTimeoutID = setTimeout(() => {
ClickUtil.flag = false;
clearTimeout(ClickUtil.throttleTimeoutID);
}, wait);
}
} else {
if (!ClickUtil.flag) {
ClickUtil.flag = true;
ClickUtil.throttleTimeoutID = setTimeout(() => {
ClickUtil.flag = false;
typeof func === 'function' && func();
clearTimeout(ClickUtil.throttleTimeoutID);
}, wait);
}
}
}
static debounce(func: () => void, wait: number = 1000) {
if (ClickUtil.debounceCacheID) {
clearTimeout(ClickUtil.debounceCacheID);
}
let timeoutID = setTimeout(() => {
typeof func === 'function' && func();
clearTimeout(timeoutID);
}, wait);
ClickUtil.debounceCacheID = timeoutID;
}
}