const debounce = (fn, delay) => {
    let timer = null;
    return function (...args) {
        if (timer) {
            clear(timer);
        }
        timer = setTimeout(() => {
            fn.apply(this, args);
        }, delay);
    };
};