面试节流这样答

176 阅读1分钟
  1. 前言
  2. 节流是什么
  3. 节流函数

1、前言

节流和防抖用来处理一些频繁的事件触发

onclick,keyup,keydown等。如用户不断点击提交表单等操作
window的resize、scroll等

2、节流是什么

用户第一次点击,会立即执行函数,此时再有点击不会执行函数,直到函数执行完成后,接收到用户再次点击会再次执行函数(节流执行第一次的请求,防抖执行最后一次请求)

3、节流函数

  function throttle(func, wait) {
    let flag = true
    return function () {
      var that = this
      var arg = arguments // argumentsz对象只能在函数内使用,是传递给函数的参数,是一个类数组对象,有length属性
      if (flag) {
        flag = false
        const timer = setInterval(() => {
          func.call(that, arg)
          clearInterval(timer)
          flag = true
        }, wait)
      }
    }
  }
  function callBack(e) {
    console.log(e)
    console.log(this) // this指向调用函数的对象
  }
  var btn = document.getElementById('btn')
  btn.onclick = throttle(callBack, 1000)