防抖与节流运用(封装)

本文介绍了如何在前端开发中使用防抖(debounce)和节流(throttle)技术,通过封装函数实现对用户频繁操作的限制,降低请求频率,以提高用户体验。实例展示了防抖在输入框输入和节流在滚动事件的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防抖与节流运用(封装)

防抖:
  	 // 防抖,当用户操作较为频繁时,只发送最后一次结果作为请求
      // 在这里我用的时ts写的,对于传入的值有严格的效验
     let Trembling=(fn:Function,deplay:number)=>{
      let timer:any = null
      return ()=>{
        if(timer!==null) {clearTimeout(timer)}
        timer=setTimeout(()=>{fn()},deplay);
      }
     }
    //  运用 当用户在输入框时(间隔1.5s内)频繁输入,取最后一次结果为准
    // 调用时应遵循Trembling函数参数里面的type
     let changes=Trembling(()=>{
      // 所有的业务逻辑代码放置在这里
      console.log("前端深造中")
     },1500)

在这里插入图片描述

节流:在这里节流我并没有封装,有兴趣的小伙伴可以自行封装试试看,和防抖的函数相同(如若不想封装的请参考下方)

// 节流,控制用户在特定的事件的内发送请求,减少用户发送请求的频次
      let flag =true
      const throttle=()=>{ 
        if(flag){
          setTimeout(()=>{
            console.log("hello")
            // 在倒计时结束时,在发送请求,会重新走流程
            flag = true
          },1000)
          flag =false 
          // 在倒计时尚未结束之前若在发送请求,请求无效
        }      
      }

节流(封装)

let throttle=(fn:Function,deplay:number)=>{
        let flag = true
        return ()=>{
          flag && setTimeout(()=>{fn(),flag=true},deplay)
          flag=false
        }
      }
//这里我就不过多讲了,意思不懂的可以参考上方的注释
//运用 例如当页面出现滚动条时 减缓次数
window.addEventListener('scroll',throttle(()=>{
        console.log("hello")
      },1000))

在这里插入图片描述
注:这里的8次代表我一直在滚动界面,由于我间隔时间为1s,故只发送8次

window.addEventListener('scroll',()=>{
        console.log("前端深造中")
      })

如果我这样来写,一旦我轻轻的滚动页面,你就会发现请求了次数高达近200,要明白节流的作用就是减缓请求次数

在这里插入图片描述
如有issure还望指出,正在成长中…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端深造中

老板别忘了支持哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值