
JavaScript高频使用之防抖与节流
发布日期:2021-05-15 00:08:49
浏览次数:15
分类:精选文章
本文共 1357 字,大约阅读时间需要 4 分钟。
防抖节流
一、防抖
1. 防抖说明
概念:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。。
通俗:乘客坐公交车(触发事件),乘客上公交车10秒钟后出发(执行事件监听器),这时如果有人上公交车(在10秒内再次触发该事件),再等10秒再出发(重新计时)。2. 应用场景
- 给按钮加函数防抖组织表单多次提交
- 对于输入框连续输入进行验证请求时,用函数防抖能有效减少请求次数
- 判断scroll是否滑倒底部,滚动事件+函数防抖
3. 防抖原理
1. 为什么会引起抖动?
用户在input框输入,监听的input事件输入框内容发生改变就触发绑定的回调函数,回调函数加入异步请求,在用户未完全输入完成,执行多次回调请求。既耗时又影响性能。
2. 如何防抖?
input抖动太灵敏,执行回调次数过于频繁,思路就是降低请求频率。原理:在输入内容时不立即执行,而是延时触发回调函数的执行。如果继续输入,则上次的不再执行。
4.实现代码
代码实现
Document 防抖Demo
数据显示列表
一、节流
1. 节流说明
概念:规定一个单位时间,在单位时间内,只能触发一次事件的回调函数,如果在同一个单位时间内某事件被触发多次,只有一次能生效。
通俗:我们知道目前的一种说法是当 1 秒内连续播放 24 张以上的图片时,在人眼的视觉中就会形成一个连贯的动画,所以在电影的播放(以前是,现在不知道)中基本是以每秒 24 张的速度播放的,为什么不 100 张或更多是因为 24 张就可以满足人类视觉需求的时候,100 张就会显得很浪费资源。2. 应用场景
- 重新调整浏览器窗口大小(resize)
- 浏览器页面滚动(scroll)
- 鼠标移动(mousemove)
3. 实现代码
// 第一种var text = document.getElementById('write');function trol(fn,delay){ var pre = new Date(); return function () { var now = new Date(); if(now-pre >= delay){ fn(); pre = new Date(); } }}function write(){ console.log(text.value);}text.addEventListener('input',trol(write,5000))
第二种
throttle
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月14日 11时10分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
TreeSet、TreeMap
2021-05-14
ObjectInputStream、ObjectOutputStream
2021-05-14
JVM内存模型
2021-05-14
反射机制
2021-05-14
反射Field、Method、Constructor
2021-05-14
可变长度参数
2021-05-14
堆空间常用参数总结
2021-05-14
3、条件查询
2021-05-14
5、分组函数 / 聚合函数
2021-05-14
8、子查询
2021-05-14
cordova打包apk更改图标
2021-05-14
开启与配置SMTP服务器
2021-05-14
APP卡片式设计
2021-05-14
GitHub上传时,项目在已有文档时直接push出现错误解决方案
2021-05-14
云数据库
2021-05-14
大数据在不同领域的应用
2021-05-14
页面置换算法
2021-05-14
推荐系统资料
2021-05-14
文件系统的层次结构
2021-05-14
减少磁盘延迟时间的方法
2021-05-14