防抖和节流代码
时间: 2023-06-21 08:07:47 浏览: 103
防抖和节流是前端开发中常用的优化技术,防抖可以防止频繁触发事件,节流可以控制事件的触发频率。下面是防抖和节流的代码实现:
防抖:
```javascript
function debounce(fn, delay) {
let timer = null;
return function () {
const context = this;
const args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
};
}
```
使用示例:
```javascript
function doSomething() {
console.log("doing something...");
}
const debouncedFn = debounce(doSomething, 500);
window.addEventListener("scroll", debouncedFn);
```
上面的代码中,`doSomething`函数会在滚动事件触发时被执行,但是使用了防抖函数`debounce`包装后,只有当停止滚动500毫秒后才会真正执行`doSomething`函数,避免了频繁触发事件。
节流:
```javascript
function throttle(fn, delay) {
let lastTime = 0;
return function () {
const context = this;
const args = arguments;
const now = new Date().getTime();
if (now - lastTime >= delay) {
fn.apply(context, args);
lastTime = now;
}
};
}
```
使用示例:
```javascript
function doSomething() {
console.log("doing something...");
}
const throttledFn = throttle(doSomething, 500);
window.addEventListener("scroll", throttledFn);
```
上面的代码中,`doSomething`函数会在滚动事件触发时被执行,但是使用了节流函数`throttle`包装后,每隔500毫秒才会执行一次`doSomething`函数,控制了事件的触发频率。
阅读全文