区分函数防抖&函数节流
1. 概念区分
函数防抖:触发事件后,在n秒内函数只能执行一次,如果触发事件后在n秒内又触发了事件,则会重新计算函数延执行时间。
简单说:
频繁触发, 但只在特定的时间内才执行一次代码,如果特定时间内重新触发,break打断之后重新开始执行;
函数节流:在极少数情况下,函数的触发不是由用户直接出发的。在这些情况下,函数有可能被频繁的调用,造成大的性能问题
简单说:
频繁触发,只在特定的时间内执行一次,continue继续执行完;
2. 原理区分
看定义,你可能一会就忘记了,什么是函数防抖,什么是函数节流,最容易出错的就是函数防抖和函数节流还给混淆了。
今天看了,明天就把函数防抖和函数节流给搞反了。这是事实,不过我发现了小巧门,就跟初中、高中的数学公式一样。不用死记硬背,搞懂原理,顺着原理就推导出来,谁还记概念呢!
咋们举个网上绝无仅有的例子,唯我独创,哈哈,自恋了!
就拿咋用苍蝇拍打苍蝇一样,什么时候是函数防抖,什么时候是函数节流呢?
当你看电视的时候,两只苍蝇在电视机屏幕上来回的移动,实在是烦。于是你拿起了你手旁的苍蝇拍,准备把该死的苍蝇拍死在电视机上。
假设,拍打一次算一次特定的时间,拍打一次还打住了苍蝇算函数完成。
- 我们拍打一次算一次完整的执行动作;
- 假设苍蝇一直在不停的起飞,重新降落;我们的手还没打下去,苍蝇就重新换位置了,如此重复;怕打坏电视屏幕,我们的手一直处于拍打前的抖动状态,防止我们的手因为苍蝇的移动,不敢拍下去,而处于一种抽搐的状态。
函数防抖:就是等苍蝇落稳了,我们进行一次拍打动作,如果苍蝇飞走了,我们停在半空的手,没有拍打到电视上,重新处于拍打前的状态。(拍打一次算一次特定的时间,此时还没有拍下去)。
对应的解释:拍打一次算一次的特定的时间,如果苍蝇飞走了,此时苍蝇拍还没有拍下,我们重新拍打苍蝇,还没拍下,苍蝇又飞走了,如此周而复始,我们一直处于抖动状态,所以,我们拍打到苍蝇飞走,不能算一个特定的时间,待苍蝇落定之后,直到苍蝇落定,苍蝇拍拍下之后算一次特定时间,否则时间重新开始计算;
函数节流:就是等苍蝇落稳了,我们进行一次拍打动作,此时苍蝇飞走了,但是,你觉得拍打下去的时候,可能伤到它,该死的苍蝇就不会在电视上乱飞,干扰你看电视,所以你毅然决然的把拍打到了电视屏幕上(拍打一次算一次特定的时间,此时动作完成了)。
对应的解释:还是拍打一次算一次的特定时间,即使苍蝇飞走了,但是苍蝇拍拍打下之后,有可能伤及到苍蝇,或者苍蝇不再讨厌的在电视屏幕上乱飞,我们不像防抖那样,重新归为计算,我们要直接把苍蝇拍拍下,完成一次特定时间的拍打动作,这期间苍蝇有飞到别的地方,我们重新开始一次特定时间的拍打苍蝇动作。
3. 总结
我们只要记住,拍打一次苍蝇为一个特定的时间,函数防抖就是,苍蝇一直飞来飞去,我们一直没有完成一次特定时间,苍蝇飞走一次,我们重新拍打一次算特定时间的开始,直到拍打苍蝇结束为一次计算时间的周期,之前没有拍下的动作周期都结束重新开始;函数节流就是,不管苍蝇飞走了还是没有飞走,都要拍打一次,直到拍打苍蝇结束,算一次计算时间的周期;
英文单词记不记得住,哦,这个不在我的教学范围内。我也记不住!如果记不住,那就只记住一个,那记不住的及时另一个!这是最笨的方法。但是,挺有效的!
区分函数防抖&函数节流的更多相关文章
- js高阶函数应用—函数防抖和节流
高阶函数指的是至少满足下列两个条件之一的函数: 1. 函数可以作为参数被传递:2.函数可以作为返回值输出: javaScript中的函数显然具备高级函数的特征,这使得函数运用更灵活,作为学习js必定会 ...
- vue函数防抖和节流
Vue函数防抖和节流https://zhuanlan.zhihu.com/p/72363385 <template> <div> <input type='text' v ...
- JavaScript中函数防抖、节流
码文不易,转载请带上本文链接,感谢~ https://www.cnblogs.com/echoyya/p/14565642.html 目录 码文不易,转载请带上本文链接,感谢~ https://www ...
- js函数防抖、节流实现
防抖 Debounce 函数防抖就是,延迟一段时间再执行函数,如果这段时间内又触发了该函数,则延迟重新计算: // 简单实现 function debounce(fn, wait) { let t r ...
- 函数防抖 & 函数节流
避免一个函数频繁执行 - 避免程序卡顿 js 是单线程的,setTimeout 这样的函数是异步的 异步的代码,交给对应的模块进行处理 模块在会将异步任务,在主线程执行完所有同步代码后,加入事件队列 ...
- js中的函数防抖与节流
一.滚动条监听的例子 写一个功能需求-- 监听浏览器滚动事件,返回当前滚条与顶部的距离,代码如下: function showTop () { var scrollTop = document.bod ...
- JavaScript函数节流和函数防抖之间的区别
一.概念解释 函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段. 大家大概都知道旧款电视机的工作原理,就是一行行得扫描出色彩到屏幕上,然后组成一张张图片.由于肉眼只能分辨出一定频率的变 ...
- “浅入浅出”函数防抖(debounce)与节流(throttle)
函数防抖与节流是日常开发中经常用到的技巧,也是前端面试中的常客,但是发现自己工作一年多了,要么直接复用已有的代码或工具,要么抄袭<JS高级程序设计>书中所述"函数节流" ...
- 【javascript】js中的函数节流和函数防抖
一.概念解释 函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段. 大家大概都知道旧款电视机的工作原理,就是一行行得扫描出色彩到屏幕上,然后组成一张张图片.由于肉眼只能分辨出一定频率的变 ...
随机推荐
- [HDU4734] F(x)(数位dp+优化)
>传送门<题意:对于一个有n位(这n位从高位到低位分别是An,An-1,An-2 ... A2,A1)的十进制数,我们定义它的权值F(x)=An*2n-1 + An-1*2n-2 + .. ...
- c++ stl nth_element 原理解析
nth_element是stl中的一个库函数,它会使迭代器nth所指的元素与整个[first,last)完整排序后.同一个位置的元素同值.即找到完整排序时第n位的正确值. 但这个函数与完整排序的区别在 ...
- Cyclic Nacklace HDU - 3746
CC这个月底总是很郁闷,昨天他查了他的信用卡,没有任何意外,只剩下99.9元了.他很苦恼,想着如何度过这最后的几天.受"HDU CakeMan"企业家精神的启发,他想卖一些小东西来 ...
- Alice's mooncake shop HDU - 4122 单调队列
题意: 有n个订单和可以在m小时内制作月饼,制作月饼不考虑时间(即,你可以在一个时刻在所有需要的月饼都做完) 接下来是n个订单的信息:需要在mon月,d日,year年,h小时交付订单r个月饼 接下来一 ...
- fzu2200 cleaning
Problem Description N个人围成一圈在讨论大扫除的事情,需要选出K个人.但是每个人与他距离为2的人存在矛盾,所以这K个人中任意两个人的距离不能为2,他们想知道共有多少种方法. In ...
- tomacat服务器上web资源访问流程、web应用打成war包发布、Context的reloadable属性、tomacat体系架构
一.web资源访问流程 二.web应用打成war包发布到服务器 好处:打成war包发布到服务器,那么服务器会自动把它拆解成文件夹 jar命令是java自带的一个命令,如果之前配置过Java编译环境就可 ...
- Hexo之更换背景及透明度
Hexo之更换背景及透明度 引入方式 首先,介绍一下引入方式,外部导入css文件,不影响内部配置. 1.创建css文件 创建一个css文件移动到\themes\butterfly\source\css ...
- codeforces 869A
A. The Artful Expedient time limit per test 1 second memory limit per test 256 megabytes input stand ...
- MS16-032 windows本地提权
试用系统:Tested on x32 Win7, x64 Win8, x64 2k12R2 提权powershell脚本: https://github.com/FuzzySecurity/Power ...
- npm version ^ meaning
npm version ^ meaning ^ 更新版 https://docs.npmjs.com/cli/v6/commands/npm-version https://github.com/ge ...