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

前端 - js - - 防抖和节流

1、防抖

短时间内重复执行相同操作时 只执行最后一次 

常见场景:浏览器输入文字后 下面会有模糊提示

实现思路:延时器控制事件在几秒后执行 每次触发事件时都会重置延时器

const fn = () => {
  // 先定义timeout 避免第一次触发时clearTimeout报错
  let timeout;

  // 每次触发事件 重置延时器
  clearTimeout(timeout)
  
  // 规定一秒后再执行
  timeout = setTimeout(()=>{
    // 需要执行的操作
    // ...
  },1000)
}

2、节流

规定时间内只执行一次 

常见场景:某一按钮点击后会添加dom节点 避免用户短时间内点击多次消耗浏览器性能

实现思路:开关控制事件是否执行 延时器控制开关是否打开

let flag = true // 开关

const fn = () => {
  // 如果此操作在一秒内重复触发 就阻止执行
  if(!flag) return

  // 触发此操作时 将开关关闭 阻止第二次执行
  flag = false

  // 需要执行的操作
  // ...

  // 一秒后将开关打开
  setTimeout(()=>{
    flag = true
  },1000) 
}

相关文章:

  • 批量测试IP和域名联通性2
  • 【Maven-plugin】有多少官方插件?
  • Vala语言基础知识-源文件和编译
  • Qt QML解决SVG图片显示模糊的问题
  • Linux FILE文件操作1-文件指针、文件缓冲区(行缓冲、全缓冲、无缓冲)的验证
  • 电容器基础观念
  • 怎样使用Modbus转Profinet网关连接USB转485模拟从站配置案例
  • Elasticsearch 向量检索详解
  • Qt QML实现视频帧提取
  • Hive SQL 精进系列:SUBSTR 函数的多样用法
  • 【Idea】 xml 文本粘贴保持原有文本的缩进格式
  • 【NLP】 6. 词向量的可变性及其影响
  • 基于llama.cpp的QwQ32B模型推理
  • 机试准备第18天
  • Netty基础—7.Netty实现消息推送服务二
  • windows版本的时序数据库TDengine安装以及可视化工具
  • 图论——广度优先搜索实现
  • adb常用的命令
  • centos 7误删/bash 拯救方法
  • 腾讯云MySQL数据库架构分析与使用场景
  • 全国人大常委会关于授权国务院在中国(新疆)自由贸易试验区暂时调整适用《中华人民共和国种子法》有关规定的决定
  • 央行4月开展12000亿元买断式逆回购操作
  • 外交部:中美双方并未就关税问题进行磋商或谈判
  • 中国武术协会原主席张耀庭逝世,曾促成电影《少林寺》拍摄
  • 孕妇乘坐高铁突发临产,广西铁路部门协助送医平安产子
  • 牛市早报|今年第二批810亿元超长期特别国债资金下达,支持消费品以旧换新