节流和防抖

Posted jscai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了节流和防抖相关的知识,希望对你有一定的参考价值。

在某些业务场景会频繁触发事件,如果不想频繁触发 这时候就需要用到函数节流和函数防抖了。

如果频繁用到 且还有去重 深浅拷贝  柯里化 推荐Lodash(https://www.lodashjs.com/

 

 //防抖函数(函数名,时间,是否立即实行)
 function debounce(func, wait, immediate) {
     let timeout, result;
     let debounced = function () {
         //改变this指向
         let _this = this;
         //改变event指向
         let args = arguments;
         clearTimeout(timeout);
         if (immediate) {
             //立即执行
             let callnow = !timeout;
             timeout = setTimeout(() => {
                 timeout = null;
             }, wait);
             if (callnow) {

                 result = func.apply(_this, args);
             }


         } else {
             //延迟执行
             timeout = setTimeout(function () {
                 func.apply(_this, args);
             }, wait);
         }
         return result;
     }
     //取消操作
     debounced.cancel = function () {
         clearTimeout(timeout);
         timeout = null;
     }
     return debounced;
 }

以上是关于节流和防抖的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript节流和防抖

120.节流和防抖,Vue中如何添加节流和防抖

120.节流和防抖,Vue中如何添加节流和防抖

19节流和防抖的区别以及应用场景的理解

lodash的防抖和节流方法

节流和防抖