vue3.0-infinite-scroll
Version:
34 lines (29 loc) • 631 B
text/typescript
type Time = number;
export const throttle = function (fn: any, delay: Time, context: any) {
let now: Time = 0;
let lastExec: Time = 0;
let timer: any = null;
const execute = () => {
fn(context);
lastExec = now;
};
return () => {
now = Date.now();
if (timer) {
clearTimeout(timer);
timer = null;
}
if (lastExec) {
const diff = delay - (now - lastExec);
if (diff < 0) {
execute();
} else {
timer = setTimeout(function () {
execute();
}, diff);
}
} else {
execute();
}
};
};