封装防抖与节流

防抖用户触发事件过于频繁,只要最后一次执行的操作

举个例子:防抖好比电梯门,当不停的有人进入的时候,门不会关闭,当电梯监测到5秒内没有人进入,才会关门

使用闭包+setTimeout封装防抖函数:

 function debounce(fn, detil) {
    let t = null
    return function () {
      if (t !== null) {
        clearTimeout(t)
      }
      t = setTimeout(() => {
        fn.call(this)
      }, detil)
    }
  }

fn:为业务逻辑,detil:为监测时间

节流:事件触发过于频繁的时候,控制执行次数

function throttle(fn, detail) {
    let flag = true;
    return function () {
      if (flag) {
        setTimeout(() => {
          fn.call(this)
          flag = true
        }, detail)
      }
      flag = false
    }
  }

上一篇:今天的一道面试题(20) - 详细讲述一下浏览器的循环系统


下一篇:算法 day5