防抖和节流(jQuery)

节流会连续触发(完整执行一次之后才会执行下一次,所以是连续的触发,连续指的是1,2,3,4....),但是每隔一段时间才会执行一次,而防抖仅在最后一次触发(每次时间内新的触发会盖过上一次的触发),也是执行间隔时间内触发的最后一次。

初始化定时器 timer 为 null
防抖   
节流 

1.防抖

将动作写进定时器中,限制触发时间,如果在时间间隔内连续触发动作,会造成排队现象,所以在下一次动作触发之前先将定时器清除,也就是说如果不及时清除定时器,那么就会依次执行触发的所有事件。

基础防抖

应用

我们在执行搜索操作的时候,每次输入都会触发键盘事件,但是实际情况下这是不合理的。这个时候我们就需要进行防抖的应用。

①首先我们需要获取到搜索框,并且给它添加键盘弹起事件

获取标签添加事件

②关键字就是搜索框中的value值

let keyword = $(this).val();

③在定时器中发起请求,获取数据,拼接字符串,将结果添加到ul

事件流程

④在下一次请求发起之前,先将上一次请求执行完才可以,也就是只有在1秒以后才可以继续触发请求

防抖代码

⑤优化,在搜索框中没有输入值时就不要显示ul

优化

2.节流

以鼠标移动事件为例

①声明一个充当开关的变量,与定时器名称使用同一个名,默认值为null。

let timer = null; // 充当开关的角色(null、1)

②给document添加鼠标移动事件

事件部署

③还是将代码写进定时器中,但是这次需要有一个限制条件,由于每次触发定时器定时器都会返回一个自然数,从1开始计数,而我们将变量值为null定义为执行下次事件的条件,所以在核心代码执行完毕之后,我们需要手动将值改为null

节流操作
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 认识防抖和节流 1.1. 对防抖和节流的认识 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电...
    AShuiCoder阅读 1,133评论 0 10
  • 防抖和节流 相同:在不影响客户体验的前提下,将频繁的回调函数,进行次数缩减.避免大量计算导致的页面卡顿.不同:防抖...
    CodeMT阅读 366评论 0 2
  • 一.什么是函数防抖&节流 函数防抖函数防抖(debounce):在事件被触发n秒后再执行回调,如果在这n秒内又被触...
    王蕾_fd49阅读 440评论 0 1
  • 函数函数我们先来看一看防抖和节流比较精炼的定义: 防抖: 指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒...
    木木心丶阅读 1,244评论 1 7
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,593评论 28 53