实现防抖和节流

防抖

所谓防抖,就是指触发事件后 n 秒后才执行函数,如果在 n 秒内又触发了事件,则会重新计算函数执行时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function debounce(fn, daytime) {
let timer;
clearInterval(timer);
timer = setTimeout(() => {
fn();
}, daytime);
}

function fn() {
console.log("fn");
}

let result = debounce(fn, 10);
console.log(result);

节流

所谓节流,就是指连续触发事件但是在 n 秒中只执行一次函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function throttle(fn, dalay) {
let start = 0;
return () => {
let now = new Date().getTime();
if (now - start > dalay) {
fn();
start = now;
}
};
}

function fn() {
console.log(1);
}
document.addEventListener("scroll", throttle(fn, 2000));