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

js的防抖与节流

目录

一、防抖

实现方式

二、节流

实现方式


一、防抖

所谓防抖,单位时间内,某个动作只能执行矗后一次,可以用在搜索框业务中。

 性能优化的手段

防抖 --- 在同一时间内 频繁触发事件,只处理最后一次

实现方式

1、用第三方库Lodash防抖的方法

   document.querySelector('input').addEventListener('input',_.debounce(function () {console.log('输入')}, 400))

2、手写实现

思路:

        当事件发生,不立即执行事件回调。给个500毫秒后执行事件回调(定时器),在500毫秒内

        再次触发事件,先取消上次的定时器,再重新开启一个定时器

   function debounce(fn, t) {let setIdreturn function () {clearTimeout(setId)setId = setTimeout(function () {fn()}, t)}}

二、节流

所谓节流,单位时间内,某个动作只能执行一次可以用在鼠标移动、页面尺寸缩放resize、滚动条滚动等场景

 性能优化的手段

  节流 - 在同一时间内 频繁触发事件,只执行一次

实现方式

1、用第三方库Lodash节流的方法

     document.querySelector('button').addEventListener('click',_.throttle(function () {console.log('发请求')}, 3000))

2、手写实现

思路

当第一次事件发生,把回调函数放到定时器 setTimeout(function () {回调调用},1000) 并且设置开关 把开关状态为true

当第二次事件发生  判断开关状态 false 可以处理当前回调, true返回

  function throttle(fn, t) {let flag = false // 一开始 false表示没有任务执行return function () {if (flag) returnflag = truesetTimeout(function () {fn()flag = false}, t)}}

http://www.lryc.cn/news/242781.html

相关文章:

  • 中职组网络安全-Windows操作系统渗透测试 -20221219win(环境+解析)
  • git本地账户如何从一台电脑迁移到另外一台
  • HOOPS Web平台助力开发3D应用,实现超大规模3D web轻量化渲染与数据格式转换!
  • GDB Debugging Notes
  • Azure Machine Learning - 创建Azure AI搜索服务
  • 鸿蒙(HarmonyOS)应用开发——安装DevEco Studio安装
  • 成都数字孪生技术推进制造业升级,工业物联网可视化应用加速
  • 管理类联考——数学——汇总篇——知识点突破——代数——函数——记忆
  • Flash Attention:高效注意力机制的突破与应用
  • Flutter开发警告Constructors in ‘@immutable‘ classes should be declared as ‘const‘
  • 想当老师应该去学什么专业
  • 【LM、LLM】浅尝二叉树在前馈神经网络上的应用
  • 鸿蒙4.0开发笔记之ArkTs语言基础与基本组件结构(四)
  • Another app is currently holding the yum lock; waiting for it to exit...
  • size和shape的区别与联系
  • 浅谈STL中的分配器
  • 禁止指定电脑程序运行的2种方法
  • 【Redis】前言--redis产生的背景以及过程
  • Java面试-微服务篇-SpringCloud
  • Git使用详解
  • 智慧楼宇可视化视频综合管理系统,助力楼宇高效安全运行
  • 【opencv】计算机视觉:实时目标追踪
  • 生态对对碰|华为OceanStor闪存存储与OceanBase完成兼容性互认证!
  • 微服务负载均衡器Ribbon
  • win10戴尔电脑安装操作系统遇到的问题MBR分区表只能安装GPT磁盘
  • 阿里云服务器(vgn7i-vws) anaconda(py39)+pytorch1.12.0(cu113)
  • 使用 STM32F7 和 TensorFlow Lite 开发低功耗人脸识别设备
  • 【wireshark】基础学习
  • 使用Java连接Hbase
  • OCR是什么意思,有哪些好用的OCR识别软件?