码迷,mamicode.com
首页 > 其他好文 > 详细

节流和防抖

时间:2020-04-29 14:43:50      阅读:43      评论:0      收藏:0      [点我收藏+]

标签:isp   none   splay   柯里化   dash   浅拷贝   https   can   执行   

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

如果频繁用到 且还有去重 深浅拷贝  柯里化 推荐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;
 }

节流和防抖

标签:isp   none   splay   柯里化   dash   浅拷贝   https   can   执行   

原文地址:https://www.cnblogs.com/jscai/p/12795560.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!