一杯茶的时间,带你彻底学会手写防抖节流

☀️ 前言

  • 前段时间群友说面试的时候老是分不清防抖节流
  • 其实防抖节流不仅仅在面试中会让大家手写,在实际项目中也可以起到性能优化的作用,所以还是很有必要掌握的。
  • 接下来我就用一杯茶的时间带大家彻底学会手写防抖节流

🍀 防抖

🌰 举个例子

  • 我们先抛开概念不谈,其实在生活中也有很多防抖的例子:
    • 比如你现在使用的电脑,在不使用后一段时间自动休眠
    • 当你再次使用的时候重新激活,并开始你设置的时间倒计时10分钟
    • 在这10分钟内你继续使用电脑又会重新开始倒计时10分钟
    • 当你最后一次使用电脑并离开时重新倒计时10分钟过去了,电脑就休眠了

image.png

  • 这其实这就是防抖的基本概念了~说白了就是在一段时间只执行一次,也就是我们上面的电脑只打开这一次。
  • 我们上面的使用电脑可以理解为触发事件,而与我上面标注的setTimeoutclearTimeout其实就是防抖的主要要素了。
  • 当然上面的是生活中的例子,那我们在我们的日常开发中其实也经常用到,比如我们调整页面的大小,验证表单某个字段是否重复时发生请求次数控制,防止表单多次提交等。

✍️ 手写防抖

  • 说了这么多,相信大家大概理解了防抖的概念,那我们现在来实现一个防抖吧,假设我们要点击一个按钮新增一条信息,当然我们不希望每次点击都调用接口新增,我们希望多次点击只新增一次,这时候我们该怎么写呢?

image.png

  • 首先我们先简单的模拟一个按钮被点击的过程。
// debounce.js
let addBtn=document.getElementById('add')
function addOne(){
   
  console.log('增加一个')
}
addBtn.addEventListener('click',addOne)
  • 因为我们需要对执行的事件进行处理所以接下来我们需要封装一下addOne函数。
// debounce.js
let addBtn=document.getElementById('add')
function addOne(){
   
  console.log('增加一个')
}
function debounce(fun){
   
  return function(
  • 59
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

快跑啊小卢_

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值