js函数防抖

1.0 js函数防抖
function debounce(fn, delay = 1000) {
    let timerId;
    return function (...args) {
        clearTimeout(timerId);
        timerId = setTimeout(() => {
            fn.apply(this, args);
        }, delay);
    };
}
2.0 vue自定义ref防抖
import { customRef } from 'vue';

export function debounceRef(value, delay = 1000) {
    let timerId;
    return customRef((track, trigger) => ({
        get value() {
            // 依赖收集
            track();
            return value;
        },
        set value(newValue) {
            clearTimeout(timerId);
            timerId = setTimeout(() => {
                value = newValue;
                // 派发更新
                trigger();
            }, delay);
        },
    }));
}
posted @ 2026-01-18 21:56  (๑•_•๑)  阅读(0)  评论(0)    收藏  举报