防抖与节流

在开发中,防抖和节流常用于处理频发触发的事件,如鼠标移动、键盘输入等,以避免性能问题。防抖技术在事件触发后等待一段时间,如果没有新的事件发生才执行回调。节流则是在一定时间内只执行一次回调,分为时间戳和定时器两种实现方式。
摘要由CSDN通过智能技术生成

前言

在开发中经常遇到一些频发触发的事件,比如说鼠标移动,键盘的输入输出,窗口的缩放,滚动条的运动等等。

下面举个例子来了解事件的频繁触发:

比如,页面上有一个元素,我们给这个元素(id为 container)来绑定鼠标移动事件:

let count = 1
let container = document.getElementById("container")

function getUserAction(){
   
	container.innerHTML = count++;
}

container.onmousemove = getUserAction

这是一段很简单的代码,效果就是随着鼠标在元素上运动而改变元素的内容。虽然在浏览器上不会出现什么卡顿,毕竟逻辑简单啊~~如果换成复杂的逻辑或者异步操作,那么就可怕了。

为了解决这种问题,有两种方案:

  1. 防抖
  2. 节流

防抖

【原理】:尽管触发了事件,但是不立马执行回调,如果你在一个事件触发的 n 秒内又触发了这个事件,那就以新的事件的事件为准,n 秒后再执行回调,总而言之,就是要等你触发完事件 n 秒内不触发了再执行。

由上面可知,我们就是需要一个函数来延迟执行 DOM 的回调函数,所以立马想到的就是 setTimeout

function debounce(fun,wait){
   
	let timeout
	return function(){
   
		clearTimeout(timeout)
		timeout = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值