首页 > 其他分享 >lodash防抖和节流简单使用

lodash防抖和节流简单使用

时间:2022-12-07 11:14:19浏览次数:28  
标签:防抖 right lodash getElementById imgEl document 节流 left

<!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>
    <style>
      html {
        height: auto;
        overflow: scroll;
      }
      body {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        padding-top: 4rem;
      }
      div {
        width: 48%;
        overflow: hidden;
      }
    </style>
    <script src="./plugins/lodash4.17.21/lodash.min.js"></script>
    <script>
      // 一些频繁触发的事件,我们不想让它频繁执行,比如 keyup scroll resize mousemove
      // 防抖:动作执行停止后间隔一定的时间执行,应用场景: 搜索框联想
      // 节流:不管执行的频率有多高,需要间隔一定的时间执行一次,应用场景:向下滚动加载数据
      // 防抖和节流的区别:防抖:不管动作多少次,只有最后一次执行;节流:一段时间内执行多次,但人为地降低了执行的频率

      let i_left = 0;
      let i_right = 0;

      document.addEventListener("DOMContentLoaded", () => {
        document.getElementById("input-text-left").addEventListener("keyup", () => {
          i_left++;
          console.log("left第" + i_left + "次");
        });
        document.getElementById("input-text-right").addEventListener(
          "keyup",
          _.debounce(function () {
            i_right++;
            console.log("right第" + i_right + "次");
          }, 800)
        );

        leftBoxEl = document.getElementById("left-box");
        rightBoxEl = document.getElementById("right-box");
        document.addEventListener("scroll", () => {
          imgEl = document.createElement("img");
          imgEl.src = "./images/1.jpg";
          leftBoxEl.appendChild(imgEl);
          console.log("left共" + leftBoxEl.querySelectorAll("img").length);
        });
        document.addEventListener(
          "scroll",
          _.throttle(() => {
            imgEl = document.createElement("img");
            imgEl.src = "./images/1.jpg";
            document.getElementById("right-box").appendChild(imgEl);
            console.log("right共" + rightBoxEl.querySelectorAll("img").length);
          }, 1000)
        );
      });
    </script>
  </head>
  <body>
    <div id="left-box">
      <input type="text" id="input-text-left" />
      <img src="./images/1.jpg" />
    </div>
    <div id="right-box">
      <input type="text" id="input-text-right" />
      <img src="./images/1.jpg" />
    </div>
  </body>
</html>

 

 

标签:防抖,right,lodash,getElementById,imgEl,document,节流,left
From: https://www.cnblogs.com/caroline2016/p/16962502.html

相关文章

  • JS—节流与防抖
     一、js防抖和节流在进行窗口的resize、scroll、输出框内容校验等操纵的时候,如果事件处理函数调用的频率无限制,会加重浏览器的负担,导致用户体验非常之差。那么为了前端......
  • 防抖,节流
    let timer=nullclearTimeout(timer)timer=setTimeout(()=>{console.log("防抖")},1000)防抖:在一定时间内只执行最后一次操作,多用于做输入框搜索节流:一定时......
  • 函数防抖和函数节流
    1、什么是函数防抖和函数节流    防抖(debounce)和节流(throttle)都是用来控制某个函数在一定时间内执行多少次的技巧,两者相似不相同,基本思想都是某些代码不可以在没有间......
  • 【一库】vueuse:我不许身为vuer,你的工具集只有lodash!
      vueuse是什么?一款基于Vue组合式API的函数工具集。以上是官方网站关于它的定义。官网地址首先,它基于VueCompositionApi(组合式API),只有在支持组合式API......
  • 防抖debounce与节流throttle(63rd)
    防抖debounce与节流throttle(63rd):https://blog.csdn.net/weixin_55608297/article/details/128072358?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.non......
  • js 手写防抖
    使用场景:多次操作只执行第一次操作。可以用于用户点击按钮事件防抖操作。多次操作只执行最后一次操作。可以搜索输入框,输入多个字符进行搜索,当输入停止之后进行搜索......
  • js的所有的this指向和节流防抖
    所有的this指向普通函数重的this指向,wind对象中的方法this指向,该对象(是对象中的方法的this指向,不是对象中的this指向,对象是没有this指向的)事件绑定中的this指向,绑定的事......
  • 防抖节流的区别 怎么实现防抖节流
    防抖节流区别 怎么实现的 防抖:指在触发事件后n秒内函数只执行一次(确定不在更改时执行)如果在n秒内再次被触发则时间会被重新计算如:王者里面的回城如果回城终端......
  • 防抖 & 节流
    防抖&节流防抖:连续触发事件,但在规定时间内,只会触发一次详细解说:规定时间为2000ms,在这个时间内,如果多次触发事件,会终止上一次没有执行完的操作,重新开始计时,最终也只会......
  • 节流和防抖的实现
    节流的理解和简单实现所谓的“节流”,是通过在一段时间内无视后来产生的回调请求来实现的。只要一位客人叫了车,司机就会为他开启计时器,一定的时间内,后面需要乘车的客人都得......