区分函数防抖&函数节流
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代码的一种手段. 大家大概都知道旧款电视机的工作原理,就是一行行得扫描出色彩到屏幕上,然后组成一张张图片.由于肉眼只能分辨出一定频率的变 ...
随机推荐
- 2019ICPC南昌站
ICPC比CCPC场面要更大的感觉,这是我的第一印象. 这场比赛教练和我们一起去的,有教练陪着也挺好的,一起吃了吃饭.后来我们吃饭就发现江西这边辣就只是辣,没啥味道,不过拌粉还是可以的.还有江西师范大 ...
- BZOJ1951 古代猪文 【数论全家桶】
BZOJ1951 古代猪文 题目链接: 题意: 计算\(g^{\sum_{k|n}(^n_k)}\%999911659\) \(n\le 10^9, g\le 10^9\) 题解: 首先,根据扩展欧拉 ...
- 开源RPA软件试用
优点 缺点 其它 Robot Framework 可视化界面 运行环境搭建复杂,依赖较多 操作复杂 倾向于自动化测试 TagUI 浏览器支持好 官方文档详细 命令行操作 非浏览器程序支持一般 ...
- 信号量解决写者优先&读者优先&公平竞争(reader writer)
先说问题: 这里的rand都是伪随机.解决也很简单,srand即可.内容懒得改了~~ 描述及思路: 代码: 运行结果: 读者优先: 效果 ...
- webpack4.0源码解析之打包后js文件分析
首先,init之后创建一个简单的webpack基本的配置,在src目录下创建两个js文件(一个主入口文件和一个非主入口文件)和一个html文件,package.json,webpack.config. ...
- 微信小程序开发抖音去水印功能
之前找了很多抖音去水印的工具全是广告,所以索性自己写了一个,提供给大家免费试用以下是微信小程序的二维码 使用教程: 1.打开微信搜索小程序:沸点软件技术服务 2.打开沸点软件技术服务小程序 3.去抖音 ...
- 在线打开,浏览PDF文件的各种方式及各种pdf插件------(MS OneDrive/google drive & google doc/ github ?raw=true)
在线打开,浏览PDF文件的各种方式: 1 Google drive&doc (国内不好使,you know GFW=Great Firewall) 1. google drive: 直接分 ...
- CSS & new class name
CSS & new class name { test: /\.((s*)css|sass)$/, // test: /\.(css|scss|sass)$/, use: ExtractTex ...
- blogs & cnblogs
blogs & cnblogs https://www.cnblogs.com/xgqfrms https://i.cnblogs.com/diaries https://i.cnblogs. ...
- 扫码登录 & 实现原理
扫码登录 & 实现原理 二维码扫描登录是什么原理? https://time.geekbang.org/dailylesson/detail/100044032 xgqfrms 2012-20 ...