防抖和节流都能用什么实现
时间: 2023-07-27 11:20:18 浏览: 105
防抖和节流的实现方法有很多种,以下是两种比较常见的实现方式:
1. 使用setTimeout实现防抖和节流
防抖:
```javascript
function debounce(fn, delay) {
let timer = null;
return function() {
clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, arguments);
}, delay);
};
}
```
节流:
```javascript
function throttle(fn, delay) {
let timer = null;
return function() {
if (!timer) {
timer = setTimeout(() => {
fn.apply(this, arguments);
timer = null;
}, delay);
}
};
}
```
2. 使用时间戳实现防抖和节流
防抖:
```javascript
function debounce(fn, delay) {
let timer = null;
return function() {
const now = +new Date();
if (timer && now - timer < delay) {
clearTimeout(timer);
}
timer = setTimeout(() => {
fn.apply(this, arguments);
}, delay);
};
}
```
节流:
```javascript
function throttle(fn, delay) {
let lastTime = 0;
return function() {
const now = +new Date();
if (now - lastTime > delay) {
fn.apply(this, arguments);
lastTime = now;
}
};
}
```
以上两种实现方式都可以实现防抖和节流,使用哪种方式取决于个人的喜好和具体应用场景。
阅读全文