防抖和节流

本文介绍了前端开发中优化性能的防抖和节流技术,阐述了它们在防止页面卡顿中的作用。防抖是将多次执行变为一次,常用于搜索框查询、表单验证等场景;节流则是规定时间内只执行最后一次,适用于滚动加载、按钮点击等场景。文章详细讲解了两者的定义、原理和应用场景,帮助开发者理解何时使用防抖和节流。
摘要由CSDN通过智能技术生成

在前端开发中,常常会用到例如scroll、mousemove等持续触发的事件,这样的事件引起的操作有可能会导致页面卡顿,我们希望这样的事件不要频繁的触发执行回调。

防抖和节流是前端性能优化的两种方式。

  • 相同点:将频繁的回调函数进行次数缩减,避免大量计算导致页面卡顿
  • 不同点:防抖是将多次执行变为一次执行;节流是将多次执行变为在规定时间内只执行最后一次。比如在页面的无限加载场景下,我们需要用户在滚动页面时,每隔一段时间发一次 Ajax 请求,而不是在用户停下滚动页面操作时才去请求数据。这样的场景,就适合用节流技术来实现。

防抖

1、定义:事件触发后在规定时间内,回调函数只能执行一次,如果在规定时间内又触发了该事件,则会重新开始计算规定时间。

2、原理:通过定时器将回调函数进行延时,如果在规定时间内继续回调,发现存在之前的定时器,则将该定时器清除,并重新设置定时器。这就要求后面所有的回调函数都要能访问到之前设置的定时器,此时需用到闭包。

3、应用:搜索框输入查询,如果用户一直输入则没有必要不停地请求,如果用户停止输入并过了规定时间间隔,再进行查询;按钮点击的事件;表单验证;浏览器窗口缩放停止后计算布局等的操作。

//fn指回调函数,delay指延迟时间,immediate指是否立即执行

function debounce(fn, delay,immediate) {
    var timer =
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值