节流的基本使用以及理解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

提示:以下是本篇文章正文内容,下面案例可供参考

一、节流是什么?

示例:高铁卫生间是否被占用,由红绿灯控制,红灯表示被占用,绿灯表示可使用。 假设每个人上卫生间都需要花费5分钟,则五分钟之内,被占用的卫生间无法被其他人使用。 上一个人使用完毕后,需要将红灯重置为绿灯,表示下一个人可以使用卫生间。 下一个人在上卫生间之前,需要先判断控制灯是否为绿色,来知晓能否上卫生间。
节流阀为空,表示可以执行下次操作;不为空,表示不能执行下次操作。 当前操作执行完,必须将节流阀重置为空,表示可以执行下次操作了。 每次执行操作前,必须先判断节流阀是否为空。

在这里插入图片描述

应用场景

(1) 鼠标连续不断地触发某事件(如点击),只在单位时间内只触发一次;
(2) 懒加载时要监听计算滚动条的位置,但不必每次滑动都触发,可以降低计算的频率,而不必去浪费 CPU 资源;

二、使用步骤

如果事件被频繁触发,节流能够减少事件触发的频率,因此,节流是有选择性地执行一部分事件!

1.定义节流阀

代码如下(示例):

// 步骤1. 定义节流阀
	var timer = null //false

2.绑定 mousemove 事件

		// 2. 绑定 mousemove 事件
				$(document).on('mousemove', function (e) {
					// 步骤3:判断节流阀是否为空,如果不为空,则证明距离上次执行间隔不足16毫秒
					if (timer) {
						return
					}
					// 3. 设置图片的位置
					// 步骤2:开启延时器 2.当设置了鼠标跟随效果后,清空 timer 节流阀,方便下次开启延时器
					timer = setTimeout(function () {
						$(angel).css('top', e.pageY + 'px').css('left', e.pageX + 'px')
						console.log('ok')
						timer = null
					}, 16)
					
				})

3. 判断节流阀是否为空,如果不为空,说明距离上一次执行时间还没有设定的时间。则返回。

			if (timer) {
				return
			}

总结

提示:这里对文章进行总结:
节流:鼠标连续不断地触发某事件(如点击),只在单位时间内只触发一次;可以降低计算的频率,而不必去浪费 CPU 资源;
当你鼠标疯狂点击的时候,始终执行的是第一次的点击。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值