事件节流和防抖

1、事件节流

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <input type="text" id="input">
  <script>
    //  // 事件节流: 设置一个时间间隔,时间间隔内只允许执行一次如果在这个时间间隔内多次触发,也只执行一次
    function throttle(fn, wait) {
      var context = this
      let lastTime = 0
      return function(...args) {
        let now = + new Date()        // + 将事件格式改为数字型的时间字符串
        if((now -lastTime) > wait) {
          fn.apply(context, args)
          lastTime = now
        }
      }
    }

    var input = document.querySelector("#input")
    input.oninput = throttle(fn,2000)
    function fn() {
      console.log(111)
    }
  </script>
</body>
</html>

 

2、事件防抖

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <button id="btn">asdsad</button>

  <script>
  //  防抖函数:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时
    function debounce(func, wait) {
      var timeout
      return function () {
        var context = this
        console.log(this)
        var args = arguments
        clearTimeout(timeout)
        timeout = setTimeout(function() {
          func.apply(context,args)
        },wait)
      }
    }

    var btn = document.querySelector("#btn")
    function fn() {
      console.log(111)
    }
    btn.onclick = debounce(fn,1000)
  </script>
</body>
</html>

 

上一篇:微信接口开发之高级篇系列【用户分组接口和生成带参数的二维码】


下一篇:docker的网络-单主机(三种原生网络)none、host、bridge