export function throttle<Args extends unknown[]>(
fn: (...args: Args) => void,
interval: number,
): (...args: Args) => void {
let nextAllowed = 0;
return (...args) => {
const now = Date.now();
if (now >= nextAllowed) {
nextAllowed = now + interval;
fn(...args);
}
};
}
const onScroll = throttle(() => {
console.log('scroll y =', window.scrollY);
}, 100);
window.addEventListener('scroll', onScroll); // fires at most every 100ms
Create a free account and build your private vault. Share publicly whenever you want.