Lodash节流和防抖总结

520 阅读1分钟

内容

在开发中常常会遇到函数的连续触发和高频次触发的情况。解决这些问题使用防抖和节流是最好不过的了。Lodash可以帮助我们实现。

lodash安装命令

npm install --save lodash

lodash.js文件下载地址: www.bootcdn.cn/lodash.js/

实例演示

防抖:前面所有的触发都被取消,最后一次执行在规定时间之后才会触发,也就是说如果连续快速的触发只会执行一次。防止多次触发同一个事件。

<head>
    <meta charset="UTF-8">
    <title>防抖</title>
    <!--引入lodashjs  也可以下载下来 -->
    <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.js"></script>
</head>
<body>
<p>
    请输入内容:<input type="text">
</p>
</body>
<script>
     let input=document.querySelector('input');
    //未使用防抖前  文本发生变化立即执行
     /*input.oninput=function () {
         console.log('ajax请求')
     }*/
    // lodash函数库对外暴露_函数
    //console.log(_);
    //解决防抖  使用lodash的debounce函数   [闭包+延时器]
    input.oninput=_.debounce(function () {
        console.log('ajax发请求') //一秒后发请求
    },1000)
</script>

节流:在规定的时间间隔不会重复触发回调,只有在大于这个时间间隔才会触发回调,把频繁的触发变为少量触发。控制高频触发的次数。

<head>
    <meta charset="UTF-8">
    <title>节流</title>
    <!--此处是先将lodash下载到本地   本地项目中直接引用lodashjs-->
    <script src="lodash.js"></script>
</head>
<body>
<div>
    <h1>
        计数器<span>0</span>
    </h1>
    <button>点击+1</button>
</div>
</body>
<script>
    //获取节点
    let  span=document.querySelector('span');
    let button=document.querySelector('button');
    let count=0;
    /*//  未使用节流前 点击一次执行一次
    button.onclick=function () {
    count++;
    span.innerHTML=count;
    };*/
    //  节流后一秒执行一次
    button.onclick=_.throttle(function () {
        count++;
        span.innerHTML=count;
    },1000)
</script>