节流和防抖的代码怎么写
时间: 2023-07-21 20:26:04 浏览: 119
js代码-函数节流与防抖
函数节流(throttle)和函数防抖(debounce)都是为了解决在高频率触发某些事件时,对页面性能产生不良影响的问题。下面是它们的代码实现:
函数节流(throttle):
```javascript
function throttle(fn, interval) {
let lastTime = 0;
return function () {
const nowTime = new Date().getTime();
if (nowTime - lastTime > interval) {
fn.apply(this, arguments);
lastTime = nowTime;
}
}
}
```
函数防抖(debounce):
```javascript
function debounce(fn, delay) {
let timer = null;
return function () {
const context = this;
const args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
}
}
```
上面的代码中,`throttle` 和 `debounce` 都接受两个参数:第一个参数是要执行的函数,第二个参数是时间间隔或延迟时间。
`throttle` 函数会返回一个新函数,这个新函数在被调用时,会根据时间间隔判断是否执行原函数。如果时间间隔已经超过了指定的时间间隔,就会执行原函数,并更新最后执行时间戳;否则不执行。
`debounce` 函数也会返回一个新函数,这个新函数在被调用时,会在指定的延迟时间内判断是否再次触发,如果在延迟时间内再次触发,就清除之前的定时器并重新设置定时器,直到延迟时间结束才执行原函数。
需要注意的是,`throttle` 和 `debounce` 函数的返回值都是一个新函数,调用新函数才能触发原函数的执行。因此,使用时需要将原函数作为第一个参数传入,并将返回的新函数赋值给事件监听器等。
阅读全文