戳蓝字"Web前端严选"关注我们哦!

手写防抖和节流

1.引言

「防抖和节流的产生」

浏览器的resize、scroll、keypress、mousemove操作时会频繁触发,如果我们在回调中计算元素位置、做一些跟DOM相关的操作,引起浏览器回流和重绘,频繁触发回调,很可能会造成浏览器掉帧,甚至会使浏览器崩溃,影响用户体验。针对这种现象,目前有两种常用的解决方案:防抖和节流。

2.防抖

function debounce(fn,delay){ let timer = null; return function(){  clearTimeout(timer);  timer = setTimeout(function(){   fn.call(this,...arguments)  },delay) }}

防抖:多次事件触发,只执行一次

举例形容一下,就是得帕金森的手去拿一杯水,虽然手抖动很多次,但是拿水的动作只执行一次

body.onscroll = debounce(function(){ console.log("防抖")},1000)

3.节流

function throttle(fn,delay){ let start = Date.now(); return function(){  let last = Date.now();  if(last - start > delay){   fn.apply(this,arguments);   start = last;  } }}

节流:事件触发,固定时间内执行一次

举例形容一下,就是水管每小时流2立方米水,节流减少到每小时流1立方米水

body.onscroll = throttle(function(){ console.log("节流")},1000)

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,我就嘤嘤嘤 -_-)

  2. 关注公众号【Web前端严选】,定期为你推送好文。

添加个人微信,进群与小伙伴一起玩耍(已经推出)~

点个在看,大家都看 

防抖 节流_面试必备考点:防抖与节流相关推荐

  1. 反向代理post参数怎么传输_面试必备:GET和POST的区别详细解说

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 最近一些小伙伴面试都会被问到 get 和 post 的区别,很多都只能简单的说几点,今天我们就来把弄的明明白白,彻彻底底. ...

  2. 游戏必备组件有哪些_面试必备:2019Vue经典面试题总结(含答案)

    点击右上方红色按钮关注"web秀",让你真正秀起来 面试必备:2019Vue经典面试题总结(含答案) 一.什么是MVVM? MVVM是Model-View-ViewModel的缩写 ...

  3. mysql面试吗hi提_面试必备的10道MySQL题

    MySQL 事务,是我们去面试中高级开发经常会被问到的问题,很多人虽然经常使用 MySQL,SQL 语句也写得很溜,但是面试的时候,被问到这些问题,总是不知从何说起.下面我们先来了解一下什么是 MyS ...

  4. get请求可以传body吗_面试必备:GET和POST的区别详细解说

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 最近一些小伙伴面试都会被问到 get 和 post 的区别,很多都只能简单的说几点,今天我们就来把弄的明明白白,彻彻底底. ...

  5. 怎么用Python写出随时间变化的字_面试必备 | 带你彻底搞懂 Python 生成器

    文章转载地址:面试必备 | 带你彻底搞懂 Python 生成器. 写在之前 Python 的高级语言特性一直是我们学习 Python 的一个难点,大部分人并没有做到熟练的掌握,甚至去学习它都感觉很困难 ...

  6. oracle中join另一个表后会查询不出一些数据_面试必备 | 8个Hive数据仓工具面试题锦集!...

    是新朋友吗?记得先点蓝字关注我哦- 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 数据分析  人工智能+Python | 人工智能+物联网 进入数据时代,大数据技术成为互联网发 ...

  7. collection集合 多少钱_面试必备-Java集合框架

    Java集合框架面试题 常见集合 集合可以看作是一种容器,用来存储对象信息. 数组和集合的区别: (1)数组长度不可变化而且无法保存具有映射关系的数据:集合类用于保存数量不确定的数据,以及保存具有映射 ...

  8. flex 左右布局_面试必考点:前端布局知识

    前端的页面布局知识是初中级前端工程师必须掌握的内容,在面试的时候无论大厂小厂都有很大概率被提问到,作为与页面最紧密的前端开发者,前端布局知识是必不可少的一环. 前言 这里所要介绍的布局知识主要是在解决 ...

  9. tcp报文格式_面试必备TCP(一):三次握手

    TCP大家都知道是什么东西,这个协议的具体报文格式如下: 标志位 URG:指示报文中有紧急数据,应尽快传送(相当于高优先级的数据). PSH:为1表示是带有push标志的数据,指示接收方在接收到该报文 ...

最新文章

  1. 微软关于XP退役的进一步说明。
  2. linux集群-keepalived介绍-用keepalived配置高可用集群
  3. 计算机无法用telnet,为何我的电脑cmd没法使用telnet命令?
  4. 操作系统实验报告5:进程的创建和终止
  5. 朴素贝叶斯(NaiveBayes)针对小数据集中文文本分类预测
  6. android studio 库工程,Android Studio 添加已有工程方法
  7. qq浏览器翻译功能启用划词插件教程
  8. NOIP之旅:NOIP2014篇
  9. python correlation_相关性系数介绍+python代码实现 correlation analysis
  10. matlab中saveas图片和save变量到不同路径(文件夹)下
  11. 7440 GT540
  12. Flixel Dame 坦克大战(二)Dame-editor使用指南
  13. 2018年全国高中数学联合竞赛一试和加试参考答案(B卷)
  14. 5.图像,音视频标签
  15. 自制美容面膜 简单实用方便让你大换肤 - 健康程序员,至尚生活!
  16. 深度学习系列2:框架tensorflow
  17. 蓄水池采样算法的python实现_常用算法-蓄水池抽样算法
  18. Equalize the Remainders(思维)
  19. ICML 2022审稿结果惹争议!LeCun:我3篇全拒了!马毅:我再也不投了...
  20. 基于SSM的商城系统

热门文章

  1. 026_元素执行函数
  2. android 日历下面备注,怎样在日历的下面加备注?
  3. Vcenter 管理中心 在服务器上新建虚拟机及安装系统
  4. Android 四大组件之——Acitivity(二) 启动模式
  5. win10连接计算机,如何在win10中连接计算机和打印机
  6. docker可以把应用及其相关的_Docker相关命令应用
  7. 查询a表有但是b表没有的数据_牛逼!一个上亿数据的报表竟然能做到秒查~
  8. motan yar php,motan学习笔记 六 opentracing Brave+zipkin实现-Go语言中文社区
  9. 怎么把原来的墙拆掉_电视墙避坑指南要收好!拆掉重装太心累...
  10. 一万的阶乘c语言方法,求10000的阶乘(c语言代码实现)