防抖操作

it2024-06-22  39

防抖函数的使用

一、什么是防抖函数?

防抖函数就是指触发某一个事件后,在一段时间之内(n秒)只能执行一次,如果触发事件后在 n 秒内又触发了该事件,则会重新计算函数延执行时间,如果在n秒内没有在触发该事件,函数才会执行。

二、防抖函数的使用时机

在开发中有一些事件会被频发触发、比如:resize,scroll,mousemove,mousehover等,不做处理的话可能一秒内会触发成百上千次,浪费计算机资源、降低程序运行速度、甚至浏览器卡死,使用防抖函数,可以很好地避免这个问题。

三、防抖函数的要点

需要一个 setTimeout 延时器来辅助实现,延迟运行需要执行的代码。如果方法或事件多次触发,则把上次记录的延迟执行代码用 clearTimeout 清掉,重新开始计时。若计时期间事件没有被重新触发,等延迟时间计时完毕,则执行目标代码。

四、代码的简单实现

// 自定义一个防抖函数 let timer = null; function debounce(fn, time) { return function () { if (timer != null) { clearTimeout(timer); } timer = setTimeout(fn, time); } }; // 需要做防抖的事件或函数 function mouseMove() { console.log(Math.random()); }; // 需要做防抖操作的事件或函数 document.querySelector(".box").onmouseenter = function () { document.querySelector(".box").addEventListener("mousemove", debounce(mouseMove, 1000)); }
最新回复(0)