const debounce = (fn, delay = 1000) => { let timer = null; return () => { if (timer) { clearTimeout(timer); } timer = setTimeout(() => { fn(); }, delay); } } const throttle = (fn, delay = 1000) => { let runState = true; return () => { if (!runState) { return; } runState = false; setTimeout(() => { fn(); runState = true; }, delay) } };