当前位置: 首页 > news >正文

JS-防抖与节流

1、防抖(Debounce

        连续触发事件时,仅在最后一次触发后等待指定时间再执行回调函数‌

function debounce(fn, delay = 300, immediate = false) {
  let timer = null
  return function(...args) {
    timer && clearTimeout(timer)
    if (immediate) { // 立即执行模式
      fn.apply(this, args)
    } else {
      timer = setTimeout(() => {
        fn.apply(this, args)
      }, delay)
    }
  }
}

2、节流(Throttle)

        连续触发事件时,固定时间间隔内仅执行一次回调函数‌

function throttle(fn, delay = 300) {
  let lastTime = 0
  let timer = null
  return function(...args) {
    const now = Date.now()
    if (now - lastTime >= delay) {
      fn.apply(this, args)
      lastTime = now
    } else {
      timer && clearTimeout(timer)
      timer = setTimeout(() => {
        fn.apply(this, args)
        lastTime = Date.now()
      }, delay)
    }
  }
}

3、核心差异对比

特性防抖 (Debounce)节流 (Throttle)
触发逻辑停止触发后执行固定间隔执行
适用场景搜索建议、窗口 resize滚动监听、鼠标移动
执行次数触发后只执行一次间隔内至少执行一次
高频触发最后一次生效均匀执行

相关文章:

  • 【STM32】解读启动文件startup_stm32f10x_md.s
  • Vue 大文件分片上传组件实现解析
  • 互联网三高-高性能之无锁编程
  • [蓝桥杯 2023 省 A] 平方差
  • CSS高度坍塌?如何解决?
  • 达梦数据库-学习-16-常用SQL记录(持续更新)
  • 【家政平台开发(36)】数据迁移与初始化开发:筑牢家政平台的数据根基
  • JavaScript 代码混淆与反混淆技术详解
  • 构建高可靠C++服务框架:从日志系统到任务调度器的完整实现
  • 定制一款国密浏览器(5):修改浏览器名称
  • Python 关键字详解
  • 超低功耗MCU软件开发设计中的要点与选型推荐
  • 基于SSM的线上花店鲜花销售商城网站系统
  • spark-core编程2
  • 使用Python计算万有引力势能
  • MYOJ_4553:(洛谷P1022)[NOIP 2000 普及组] 计算器的改良(数学运算与求解相关)
  • ubuntu22.04下安装mysql以及mysql-workbench
  • 【2025年认证杯数学中国数学建模网络挑战赛】A题解题思路与模型代码
  • ssh 登录报错集合(FQA)
  • [WUSTCTF2020]level1
  • 怎样建网站 需要/各种手艺培训班
  • 做商城网站在哪里注册营业执照/免费软文推广平台
  • 网站无法下载视频 怎么做/全国疫情最新消息今天新增
  • 专业做外贸网站/网络营销策略分析
  • 373网站怎么做这样的网站/懂得网站推广
  • 政府网站建设项目背景/百度推广介绍