当前位置:网站首页>防抖和节流
防抖和节流
2022-07-19 05:06:00 【龙眸】
一、防抖
1、什么是防抖?
防抖策略(debounce)是当事件被触发后,延迟n秒后再执行回调,如果在这n秒内事件又被触发,则重新计时。
2、防抖的应用场景
·用户在输入框中连续输入一串字符串,可以通过防抖策略,只在输入完成后,才能执行查询的请求,这样可以有效减少请求次数,节约请求资源。
3、防抖代码案例
详看上一篇文章,淘宝搜索框案例淘宝搜索框案例
二、节流
1、什么是节流?
节流策略(throttle),顾名思义,可以减少一段时间内事件的触发频率
2、节流的应用场景?
①鼠标连续不断地触发某事件(如点击),只在单位时间内只触发一次;
②懒加载时要监听计算滚动条的位置,但不必每次滑动都触发,可以降低计算的频率,而不必去浪费CPU资源。
3、节流阀的概念:
节流阀为空,表示可以执行下次操作;不为空,表示不能执行下次操作;
当前操作执行完,必须将节流阀重置为空,表示可以执行下次操作;
每次执行操作完,必须先判断节流阀是否为空。
4、节流代码案例
鼠标跟随效果代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./lib/jquery.js"></script>
<style> html, body {
margin: 0; padding: 0; overflow: hidden; } #angel {
position: absolute; } </style>
</head>
<body>
<img src="./angel.gif" alt="" id="angel">
<script> $(function() {
// 获取图片元素 var angel = $('#angel') // 1.预定义一个timer节流阀 var timer = null // 监听文档的mousemove事件 $(document).on('mousemove', function(e) {
// 3.判断节流阀是否为空,如果不为空,则距离上次执行间隔不足16毫秒 if (timer) {
return } timer = setTimeout(function() {
// 设置图片的位置 $('#angel').css('left', e.pageX + 'px').css('top', e.pageY + 'px') // 2.当设置了鼠标跟随效果后,清空timer节流阀,方便下次开启延时器 console.log('ok'); timer = null }, 16) }) }) </script>
</body>
</html>
三、总结防抖和节流的区别
防抖和节流的区别
①防抖:如果事件被频率触发,防抖能保证只有最后一次触发生效;前面N多次的触发都会被忽略;
②节流:如果事件被频繁触发,节流能够减少事件触发的频率,因此,节流是有选择性地执行一部分事件;
边栏推荐
- C语言实现通讯录
- 6. Implementation of bidirectional binding (V-model)
- 【js】call()、apply()、bind() 的用法
- Special topic of structure
- 学习日记6-数组
- The longest common subsequence of order 2 and order n
- C language structure knowledge sharing
- Dynamic memory request
- C language program environment and preprocessing
- Learning diary 3- input and output of data
猜你喜欢
C语言实现三子棋
有趣的扫雷游戏,C语言编程实现
使用nvm use出现exit status 1与exit status 145乱码
92-兄弟组件间的传值问题
【论文】MEC: Memory-efficient Convolution for Deep Neural Network
C language program environment and preprocessing
69 simple chat dialog - expand - recall function
Learning diary 4- program structure and control statements
Interesting minesweeping game, C language programming
el-transfer 左侧右侧默认数据展示
随机推荐
4.MVC模型和MVVM模型
c语言自定义类型:结构体、枚举、联合
字符串逆序的几种写法
69-简单聊天对话框-拓展-撤回功能
C語言實現通訊錄
更易上手的C语言入门级芝士 (2) 选择语句+循环语句、函数、数组、操作符(超详细)
C语言实现基础版扫雷
有趣的扫雷游戏,C语言编程实现
Dynamic memory management
1. Realize MVVM bidirectional data binding stepping pit - infinite trigger get, set
5. Two ways of writing el and data
Pointer operation exercises and string functions
54-Object.defineProperty方法
学习日记4-程序结构和控制语句
7.Object. Defineproperty and data broker (data hijacking)
Learning diary 6 array
scroll案例:带有动画的返回顶部
9. Keyboard events
更易上手的C语言入门级芝士 (3) 常见关键字+define+指针+结构体(超详细)
练习提升C语言-1