节流函数(throttle)的原理
throttle节流函数,就是一个函数调用的频率控制器;
var safe = true;
function throttle() {if (safe) {lazyLoad();safe = false;setTimeout(function() {safe = true;}, 500);}}
如下代码,safe每隔500ms才会为true,所以srollFn最快500ms执行一次。
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body style="height:2000px"> <script>/*throttle节流函数,就是一个函数调用的频率控制器;如下代码,safe每隔500ms才会为true,所以srollFn最快500ms执行一次。*/var num = 0;function lazyLoad() {num++;console.log(num);}var safe = true;function throttle() {if (safe) {lazyLoad();safe = false;setTimeout(function () {safe = true;}, 1000);}}window.onscroll = throttle;</script> </body> </html>
转载于:https://www.cnblogs.com/aredleave/p/7573157.html
节流函数(throttle)的原理相关推荐
- 小程序开发中使用节流函数throttle的正确方式
问题 以前在开发小程序项目时,经常遇到节流需求,然后研究了好久都没成功.今天又遇到了,终于被我弄成功了.原来是使用方法错误,终究还是Javascript的基本功差导致的. 使用的小程序开发框架是mpv ...
- 深入浅出节流函数 throttle
引言 上一节我们详细聊了聊高阶函数之柯里化,通过介绍其定义和三种柯里化应用,并在最后实现了一个通用的 currying 函数.这一小节会继续之前的篇幅聊聊函数节流 throttle,给出这种高阶函数的 ...
- 简单的节流函数throttle
在实际项目中,总会遇到一些函数频繁调用的情况,比如window.resize,mouseover,上传进度类似的触发频率比较高的函数,造成很大的性能损耗,这里可以使用节流函数来进行性能优化,主要是限制 ...
- 实现js节流函数throttle
两个timer实现js节流函数 用两个timer做一个函数调用节流器,不需要更多的逻辑,保证第一次调用和每间隔timeout时间后被触发和最后一次的调用被触发: // js 节流函数实现 functi ...
- 节流函数-throttle
1. 功能 throttle 和防抖一样都是减少高频率执行代码的执行频率. 2.使用场景 oninput onresize onscroll onmousemove onmousehover 等等 3 ...
- JavaScript 节流函数 Throttle 详解
在浏览器 DOM 事件里面,有一些事件会随着用户的操作不间断触发.比如:重新调整浏览器窗口大小(resize),浏览器页面滚动(scroll),鼠标移动 (mousemove).也就是说用户在触发这些 ...
- throttle节流函数
深入浅出节流函数 throttle 函数节流指的是某个函数在一定时间间隔内(例如 3 秒)只执行一次,在这 3 秒内 无视后来产生的函数调用请求,也不会延长时间间隔.3 秒间隔结束后第一次遇到新的函数 ...
- 详解防抖函数(debounce)和节流函数(throttle)
函数防抖(debounce) 函数防抖,就是指触发事件后,在 n 秒后只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数的执行时间. 简单的说,当一个动作连续触发,只执行最后一次. 列举: ...
- vue中如何使用节流(throttle)函数
JavaScript 中的函数大多数情况下都是由用户主动调用触发的,除非是函数本身的实现不合 理,否则我们一般不会遇到跟性能相关的问题.但在一些少数情况下,函数的触发不是由用户直 接控制的.在这些场景 ...
最新文章
- 单链表-在带头结点的单链表L中删除一个最小值结点(四指针)
- 码位(code position/point)Unicode 编码与 Python 2/3 编码兼容性问题
- 关于301跳转的多种办法
- Ajax提交打开新窗口,浏览器拦截处理;以及跨域问题
- devops_您的DevOps阅读心愿单的10本书
- scala模板写入es_Spark——scala 实用小方法
- (转)Java 调用 C++ (Java 调用 dll)
- InfoPath中repeationg section动态填充数据
- 遗传优化算法优化LSTM结构-准确率
- python实现仿射变换
- 计算机网络与多媒体专科测试,上海第二工业大学2021年专科层次依法自主招生生考试职业技能测试考纲...
- Python机器学习及实践——特征降维
- 电容去耦原理笔记(彻底理解并伴有公式计算)
- Ubuntu下与openvpx相关的目录和文件
- 哪个主板可供选择?ATX,Micro-ATX还是Mini-ITX?
- 网站服务器怎么做防御?遇到攻击如何解决?
- WebStorm 2016 最新安装指南 破解 汉化 字体设置
- 计算机应用基础试题操作题,计算机应用基础期末考试操作题.doc
- 解决Windows10/11系统桌面背景或者IDE背景出现的莫名其妙的方框/格子
- GetCheckedRadioButton
热门文章
- Python+selenium 自动化-mac下安装配置chrome驱动方法
- Windows 技术篇-WPS关闭推送广告配置方法
- Chrome 技术篇-console控制台检测xpath、css唯一性
- 3.	定义10个字节的键盘缓冲区,然后键盘输入字符填满该缓冲区,做如下工作: (1)分别将输入键盘缓冲区的字符按数字,小写字母,大写字母,其他字符进行计数; 分别将这些计数值显示出来。 (2)分别将这
- 【C language】函数指针
- sdut 2136 数据结构实验之二叉树的建立与遍历
- 3.3 matlab用switch语句实现选择结构
- markdown希腊字母
- 轻松删除git本地创建的仓库
- 插入排序InsertionSort(Python实现)