zoukankan      html  css  js  c++  java
  • 防抖节流

    防抖

      解决页面中的搜索框频繁输入导致频繁发送请求损耗性能的问题;可以设置一个定时器,用下一次的执行来清除上一次的预执行。

    clearTimeout(this.TimeId);
        this.TimeId = setTimeout(() => {
          // 4 拼接接口路径
          this.getGoodsBySearch(value);
        }, 1000);

    节流

    解决页面在触底后频繁发送请求导致损耗性能的问题。

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <style>
        *{
          margin: 0;
          padding: 0;
          box-sizing: border-box;
        }
        body{
          height: 100vh;
          overflow: auto;
        }
        div{
          height: 50px;
          font-size: 20px;
          padding: 5px;
          /* border-bottom: 1px solid #000; */
          box-shadow: 0 1px 1px 1px red;
        }
      </style>
    </head>
    <body>
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>5</div>
      <div>6</div>
      <div>7</div>
      <div>8</div>
      <div>9</div>
      <div>10</div>
      <div>11</div>
      <div>12</div>
      <div>13</div>
      <div>14</div>
      <div>15</div>
      <div>16</div>
      <div>17</div>
      <div>18</div>
      <div>19</div>
      <div>20</div>
      <div>21</div>
      <div>22</div>
      <div>23</div>
      <div>24</div>
      <div>25</div>
      <div>26</div>
      <div>27</div>
      <div>28</div>
      <div>29</div>
      <div>30</div>
      <div>31</div>
      <div>32</div>
      <div>33</div>
      <div>34</div>
      <div>35</div>
      <div>36</div>
      <div>37</div>
      <div>38</div>
      <div>39</div>
      <div>40</div>
    </body>
    <script>
    
      // 是否在加载中
      let isLoadding=false;
    
      // 1 滚动条事件
      document.body.onscroll=function(){
        // 1 获取滚动条距离顶部的距离
        let scrollTop=document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
        // 2 如何判断 滚动条到了底部了 滚动条距离底部 50px 就触发行为 
        // 2.1 先算出来 整个div列表 高度
        let totalDivHeight=document.querySelector("div").clientHeight*document.querySelectorAll("div").length;
        // 2.2 先算出来 整个div列表比 body标签高多少
        let dis=totalDivHeight-document.body.clientHeight;
        // 2.3 当 滚动条距离底部 50px的时候就触发
        if(dis-scrollTop<=50){
          // console.log("触底啦!!!");
          // 发送异步请求的代码 
          // 判断请求是否在加载中
          if(isLoadding){
            // 什么都不做了。。
          }else{
            // 告诉别人 我们正在请求数据
            isLoadding=true;
            console.log("发送异步请求");
            // 异步请求成功了 再打开开关
            setTimeout(() => {
              console.log("数据请求成功");
              isLoadding=false;
            }, 3000);
          }
        }
        
      }
      
    </script>
    </html>
  • 相关阅读:
    JavaScript判断系统语言
    微信静默授权
    vue-cli3 一直运行 /sockjs-node/info?t= 解决方案
    promise 链式
    js unicode转中文 &#26041;&#26696;&#27010;&#36848;&#32852;&#32593;LED&#29031;&#26126;&#26041;&#26696;&#21487;&#25191;&#34892;&#20840;&#37096;&#30340;DALI &#21644;
    Taro -- 文字左右滚动公告效果
    JS删除对象中的某一属性(delete)
    Taro -- 微信小程序密码弹窗
    Taro -- 微信小程序wxParse达到html转换wxml
    Taro -- 微信小程序登录
  • 原文地址:https://www.cnblogs.com/sauronblog/p/11440882.html
Copyright © 2011-2022 走看看