节流和防抖

本文深入探讨了函数节流和防抖两种优化技术,它们都是为了降低回调执行频率,节省计算资源。函数节流在指定时间内只执行一次,常用于滚动加载、窗口大小调整等场景;而防抖则确保在连续操作后只执行一次,适用于搜索框输入、手机号验证等。通过示例代码展示了两种技术的实现,并分析了它们的区别和适用范围。
摘要由CSDN通过智能技术生成

定义

  • 节流: n 秒内只运行一次,若在 n 秒内重复触发,只有一次执行

  • 防抖: n 秒后在执行该事件,若在 n 秒内被重复触发,则重新计时

    代码实现

    节流

    完成节流可以使用时间戳与定时器的写法

    使用时间戳写法,事件会立即执行,停止触发后没有办法再次执行

      let time1 = null

            $('.jl').mousemove(function () {

                if (new Date() - time1 >= 1000) {

                    console.log('我是节流....');

                    time1 = new Date()

                }

            })

  • 使用定时器写法,1000毫秒后第一次执行,第二次事件停止触发后依然会再一次执行

防抖

// 连续行为只触发一次:防抖

        let time2 = null

        $('.fd').mousemove(function () {

            if (new Date() - time2 >= 1000) {

                console.log('我是防抖...');

            }

            time2 = new Date()

        })

二、区别

相同点:

  • 都可以通过使用 setTimeout 实现

  • 目的都是,降低回调执行频率。节省计算资源

不同点:

节流在间隔一段时间执行一次回调的场景有:

  • 函数防抖,在一段连续操作结束后,处理回调,利用clearTimeout和 setTimeout实现。函数节流,在一段连续操作中,每一段时间只执行一次,频率较高的事件中使用来提高性能

  • 函数防抖关注一定时间连续触发的事件,只在最后执行一次,而函数节流一段时间内只执行一次

    三、应用场景

    防抖在连续的事件,只需触发一次回调的场景有:

  • 搜索框搜索输入。只需用户最后一次输入完,再发送请求

  • 手机号、邮箱验证输入检测

  • 滚动加载,加载更多或滚到底部监听

  • 搜索框,搜索联想功能

  • 窗口大小resize。只需窗口调整完成后,计算窗口大小。防止重复渲染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值