javascript中的防抖和节流

1.什么是防抖

防抖是指在事件触发后,延迟一定时间再执行回调函数。如果在延迟时间内又触发了该事件,则重新计时。这样可以避免在短时间内频繁触发事件导致的性能问题。

防抖的应用场景包括:

  • 输入框搜索联想:用户连续输入时,延迟一定时间再发送请求,减少请求次数。

  • 窗口大小改变时的事件处理:用户调整窗口大小时,延迟一定时间再重新计算布局,避免频繁重绘。

要       求:设置延时器,短时间高频率触发只有最后一次触发成功
代码演示:

    //防抖
    var timer = null
    document.querySelector('button')
        .addEventListener('click', function () {
            clearTimeout(timer)
            timer = setTimeout(() => {
                console.log(1);
            }, 2000)
        })

2.什么是节流

节流是指在一定时间内只执行一次回调函数。如果在该时间段内多次触发事件,只有第一次触发会执行回调函数,后续的触发会被忽略。
节流的应用场景包括:

  • 页面滚动事件:滚动过程中触发的事件处理,可以通过节流来减少触发次数,提高性能。

  • 鼠标移动事件:鼠标移动过程中触发的事件处理,可以通过节流来控制触发频率,避免过多的计算和渲染。

防抖和节流的实现方式有多种,可以使用JavaScript编写自定义函数,也可以使用第三方库如Lodash提供的函数进行处理。

防抖和节流是前端开发中常用的优化技术,通过控制事件触发的频率,可以提升用户体验和页面性能。防抖延迟执行回调函数,避免频繁触发事件;节流在一定时间内只执行一次回调函数,控制触发频率。根据具体的应用场景选择合适的技术来优化代码。

要     求:设置状态锁,短时间高频率触发只有第一次触发成功
代码演示:

//节流
    var key = false
    document.getElementById('btn')
        .addEventListener('click', function () {
            if (!key) {
                key = true
                setTimeout(() => {
                    console.log(2);
                    key = false
                }, 1500)
            }
        })

3.防抖和节流的统一作用

防止短时间内高频繁调用同一接口的方法。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值