当前位置: 首页 > 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滚动监听、鼠标移动
执行次数触发后只执行一次间隔内至少执行一次
高频触发最后一次生效均匀执行
http://www.dtcms.com/a/125613.html

相关文章:

  • 【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
  • 198. 打家劫舍:动态规划
  • Unifying Short and Long-Term Tracking with Graph Hierarchies—CVPR2023
  • Spring定时任务修仙指南:从@Scheduled到分布式调度的终极奥义
  • EtherNet/IP 转 Modbus 协议网关
  • Kaggle-Disaster Tweets-(二分类+NLP+模型融合)
  • 不用额外下载jar包,idea快速查看使用的组件源码
  • 基于JavaAPIforKml实现Kml 2.2版本的全量解析实践-以两步路网站为例
  • 代发考试战报:4月份最新锐捷RCNA RCNP 考试通过战报
  • Stable Diffusion 扩展知识实操整合
  • cin,cin.get(),getchar(),getline(),cin.get line()异同点