防抖 节流_面试必备考点:防抖与节流
戳蓝字"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)
❤️ 感谢大家
如果你觉得这篇内容对你挺有有帮助的话:
点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,我就嘤嘤嘤 -_-)
关注公众号【Web前端严选】,定期为你推送好文。
添加个人微信,进群与小伙伴一起玩耍(已经推出)~
点个在看,大家都看
防抖 节流_面试必备考点:防抖与节流相关推荐
- 反向代理post参数怎么传输_面试必备:GET和POST的区别详细解说
点击右上方红色按钮关注"web秀",让你真正秀起来 前言 最近一些小伙伴面试都会被问到 get 和 post 的区别,很多都只能简单的说几点,今天我们就来把弄的明明白白,彻彻底底. ...
- 游戏必备组件有哪些_面试必备:2019Vue经典面试题总结(含答案)
点击右上方红色按钮关注"web秀",让你真正秀起来 面试必备:2019Vue经典面试题总结(含答案) 一.什么是MVVM? MVVM是Model-View-ViewModel的缩写 ...
- mysql面试吗hi提_面试必备的10道MySQL题
MySQL 事务,是我们去面试中高级开发经常会被问到的问题,很多人虽然经常使用 MySQL,SQL 语句也写得很溜,但是面试的时候,被问到这些问题,总是不知从何说起.下面我们先来了解一下什么是 MyS ...
- get请求可以传body吗_面试必备:GET和POST的区别详细解说
点击右上方红色按钮关注"web秀",让你真正秀起来 前言 最近一些小伙伴面试都会被问到 get 和 post 的区别,很多都只能简单的说几点,今天我们就来把弄的明明白白,彻彻底底. ...
- 怎么用Python写出随时间变化的字_面试必备 | 带你彻底搞懂 Python 生成器
文章转载地址:面试必备 | 带你彻底搞懂 Python 生成器. 写在之前 Python 的高级语言特性一直是我们学习 Python 的一个难点,大部分人并没有做到熟练的掌握,甚至去学习它都感觉很困难 ...
- oracle中join另一个表后会查询不出一些数据_面试必备 | 8个Hive数据仓工具面试题锦集!...
是新朋友吗?记得先点蓝字关注我哦- 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 数据分析 人工智能+Python | 人工智能+物联网 进入数据时代,大数据技术成为互联网发 ...
- collection集合 多少钱_面试必备-Java集合框架
Java集合框架面试题 常见集合 集合可以看作是一种容器,用来存储对象信息. 数组和集合的区别: (1)数组长度不可变化而且无法保存具有映射关系的数据:集合类用于保存数量不确定的数据,以及保存具有映射 ...
- flex 左右布局_面试必考点:前端布局知识
前端的页面布局知识是初中级前端工程师必须掌握的内容,在面试的时候无论大厂小厂都有很大概率被提问到,作为与页面最紧密的前端开发者,前端布局知识是必不可少的一环. 前言 这里所要介绍的布局知识主要是在解决 ...
- tcp报文格式_面试必备TCP(一):三次握手
TCP大家都知道是什么东西,这个协议的具体报文格式如下: 标志位 URG:指示报文中有紧急数据,应尽快传送(相当于高优先级的数据). PSH:为1表示是带有push标志的数据,指示接收方在接收到该报文 ...
最新文章
- 微软关于XP退役的进一步说明。
- linux集群-keepalived介绍-用keepalived配置高可用集群
- 计算机无法用telnet,为何我的电脑cmd没法使用telnet命令?
- 操作系统实验报告5:进程的创建和终止
- 朴素贝叶斯(NaiveBayes)针对小数据集中文文本分类预测
- android studio 库工程,Android Studio 添加已有工程方法
- qq浏览器翻译功能启用划词插件教程
- NOIP之旅:NOIP2014篇
- python correlation_相关性系数介绍+python代码实现 correlation analysis
- matlab中saveas图片和save变量到不同路径(文件夹)下
- 7440 GT540
- Flixel Dame 坦克大战(二)Dame-editor使用指南
- 2018年全国高中数学联合竞赛一试和加试参考答案(B卷)
- 5.图像,音视频标签
- 自制美容面膜 简单实用方便让你大换肤 - 健康程序员,至尚生活!
- 深度学习系列2:框架tensorflow
- 蓄水池采样算法的python实现_常用算法-蓄水池抽样算法
- Equalize the Remainders(思维)
- ICML 2022审稿结果惹争议!LeCun:我3篇全拒了!马毅:我再也不投了...
- 基于SSM的商城系统
热门文章
- 026_元素执行函数
- android 日历下面备注,怎样在日历的下面加备注?
- Vcenter 管理中心 在服务器上新建虚拟机及安装系统
- Android 四大组件之——Acitivity(二) 启动模式
- win10连接计算机,如何在win10中连接计算机和打印机
- docker可以把应用及其相关的_Docker相关命令应用
- 查询a表有但是b表没有的数据_牛逼!一个上亿数据的报表竟然能做到秒查~
- motan yar php,motan学习笔记 六 opentracing Brave+zipkin实现-Go语言中文社区
- 怎么把原来的墙拆掉_电视墙避坑指南要收好!拆掉重装太心累...
- 一万的阶乘c语言方法,求10000的阶乘(c语言代码实现)