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);},}));
}