防抖&节流代码实现

发布时间 2023-11-07 15:21:14作者: 献苓

## 防抖函数

> 设置一个定时器,当我们重复调用一次函数,我们就清除定时器,重新定时,直到在设定的时间段内没有重复调用函数

```js

/** * fn 需要执行的方法

* delay 延时时间,默认给个500毫秒

* isImmediately 是否立即执行,默认不会

*/

function debounce(func, delay) {
//定义一个定时器 let timer; return function() {
// 返回一个闭包,延长其定时器的生命周期,重复调用函数会清理上一个定时器 clearTimeout(timer); timer = setTimeout(() => { func.apply(this, arguments); }, delay); }; }

```

## 节流

> 可以理解为一个控制阀门,

```js

/**
* func        需要执行的方法
* delay       延时时间,默认给个300毫秒,可以根据需求自定义
*/
function throttle(func, delay) {
  let timer;
  return function() {
// 如果没有定时器,就执行该函数;有定时器就不处理 if (!timer) { timer = setTimeout(() => { // this:改变this指向 arguments:拿到传递的参数信息 func.apply(this, arguments); timer = null; }, delay); } }; }

```