在 JavaScript 中,高频事件指的是频繁触发的事件,例如滚动、输入、鼠标移动等。为了提高性能并避免因事件处理程序执行时间过长而导致的卡顿或浏览器无响应,我们可以使用防抖(debounce)和节流(throttle)两种技术。
以下是一个简单的防抖函数实现:
function debounce(func, wait) {
let timeout;
return function () {
const context = this;
const args = arguments;
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(context, args), wait);
};
}
使用示例:
const handleScroll = debounce(function () {
console.log('滚动事件触发');
}, 200);
window.addEventListener('scroll', handleScroll);
以下是一个简单的节流函数实现:
function throttle(func, interval) {
let lastExecution = 0;
return function () {
const context = this;
const args = arguments;
const now = Date.now();
if (now - lastExecution >= interval) {
lastExecution = now;
func.apply(context, args);
}
};
}
使用示例:
const handleScroll = throttle(function () {
console.log('滚动事件触发');
}, 200);
window.addEventListener('scroll', handleScroll);
总结:
根据实际需求选择合适的策略来处理高频事件,可以有效提升应用的性能和用户体验。