前端防抖、节流封装

转自: https://blog.csdn.net/weixin_44429874/article/details/108984293

关于前端防抖、节流函数封装

总结:
个人理解.

1.  防抖:

// 防抖函数:当一个事件触发后的n秒内执行,当n秒内再次触发事件,重新开始计算计时器,当n秒内重新反复触发,回调永远不会执行.

function debounce(fn,time,triggleNow){
     // 定义是否马上触发事件处理函数
     var t = null,
     res;
     //定义一个空的定时器
     var debounced = function () {
       var _seelf = this;
       args = arguments;
       //进入后首先清除定时器
       if (t) {
         clearTimeout(t)
       }
       if (triggleNow) {
         var exec = !t
         t = setTimeout(function(){
           t = null
         },time)
         if (exec) {
           res = fn.apply(_seelf,args)
         }
       }else{
         //
       t = setTimeout(function(){
         res = fn.apply(_seelf,args)
       },time)
       }
       return res
     }
     debounced.remove = function () {
       clearTimeout(t)
       t = null
       //清除定时器
     }
   return debounced;
}
2. 节流:

函数节流,当事件被触发的n秒内只执行一次事件处理函数.

function throttle(fn, delay) {
    var t = null,
        begin = new Date().getTime();
    //定义开始时间
    return function () {
        var _self = this,
            args = arguments,
            curr = new Date().getTime();
        clearTimeout(t);
        if (curr - begin >= delay) {
            //两次输入时间间隔小于定义的延迟时间则触发
            fn.apply(_self, args);
            begin = curr
        } else {
            t = setTimeout(function () {
                    fn.apply(_self, args)
                }, delay)
        }
    }
}

转载: 看的B站大佬视频, up号:前端小野森森

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端防抖节流的使用场景很多。其中一种常见的场景是在用户输入搜索框时进行搜索提示。当用户快速输入时,如果每次输入都立即触发搜索请求,会造成过多的请求并降低性能。这时可以使用防抖来延迟执行搜索请求,只当用户停止输入一段时间后才触发搜索请求,避免不必要的请求。 另一个使用场景是在页面滚动时进行懒加载。当用户滚动页面时,如果每次滚动都立即加载图片或数据,会造成页面卡顿。通过使用节流,可以控制在一定时间内只触发一次加载,提高页面的流畅度。 此外,防抖节流还可以应用于按钮点击事件,防止用户频繁点击按钮导致重复提交或执行多次操作。通过设置适当的延迟时间,可以确保在用户点击按钮后只执行一次操作。 总之,前端防抖节流的使用场景包括搜索提示、懒加载和按钮点击事件等,通过延迟执行或控制触发频率,可以提升用户体验和页面性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [前端节流防抖的实景应用](https://blog.csdn.net/qq_52022825/article/details/125057737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [防抖节流封装函数与使用详解](https://download.csdn.net/download/weixin_38695061/14888196)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值