天天看點

手撕系列——手撕防抖節流

一、簡單介紹

防抖節流 是前端性能優化的重要方法之一,他們倆的目标非常明确,減少對伺服器的請求,繼而減輕對伺服器的負載,是一種性能優化的方式。

防抖

展現: 百度輸入框每輸入一個字都會向後端發起請求,為了減少不必要的請求,我們減少請求的次數。用 防抖 ,我們可以設定一個時間,如果在這個時間内頻繁觸發某個事件,我們就不執行這個事件,如果超出這個時間(前後兩次事件間隔時間超出這個時間),就執行(後面)這個事件!

實作

<!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>
    <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
  </head>
  <body>
    輸入:<input type="text" id="input" />
    <div>觸發了 <span id="n">0</span>次</div>

    <script>
      var n = 0;
      document.querySelector("#input").onkeydown = _.debounce(search, 1000);
      function search() {
        n++;
        document.querySelector("#n").innerHTML = n;
      }
    </script>
  </body>
</html>
           

節流

展現:當我們連續觸發某個事件的時候,我們可以設定一個時間(1000ms),當監測到我們一直觸發事件的時候,就每隔設定的時間(1000ms)觸發一次事件!

未完…