当前位置:首页 > JavaScript

js实现节流

2026-02-01 02:05:25JavaScript

节流的概念

节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。常用于高频事件(如滚动、输入、窗口调整大小等)的性能优化。

基础实现方式

使用时间戳判断是否执行函数。记录上次执行时间,若当前时间与上次执行时间的差值大于设定阈值,则执行函数并更新上次执行时间。

function throttle(func, delay) {
  let lastTime = 0;
  return function(...args) {
    const now = Date.now();
    if (now - lastTime >= delay) {
      func.apply(this, args);
      lastTime = now;
    }
  };
}

定时器实现方式

通过定时器延迟执行函数。若定时器存在则跳过执行,否则设置定时器并在执行后清除。

function throttle(func, delay) {
  let timer = null;
  return function(...args) {
    if (!timer) {
      timer = setTimeout(() => {
        func.apply(this, args);
        timer = null;
      }, delay);
    }
  };
}

结合时间戳与定时器

结合两种方式确保最后一次调用会被执行(适用于需要触发尾调用的情况)。

function throttle(func, delay) {
  let lastTime = 0;
  let timer = null;
  return function(...args) {
    const now = Date.now();
    const remaining = delay - (now - lastTime);
    if (remaining <= 0) {
      if (timer) {
        clearTimeout(timer);
        timer = null;
      }
      func.apply(this, args);
      lastTime = now;
    } else if (!timer) {
      timer = setTimeout(() => {
        func.apply(this, args);
        lastTime = Date.now();
        timer = null;
      }, remaining);
    }
  };
}

使用场景示例

滚动事件节流,避免频繁触发回调。

js实现节流

window.addEventListener('scroll', throttle(() => {
  console.log('Scroll event throttled');
}, 200));

注意事项

  • 时间间隔(delay)需根据实际场景调整,过短可能无法有效节流,过长可能导致响应延迟。
  • 确保函数执行时的上下文(this)和参数正确传递。
  • 对于需要取消节流的场景,可扩展实现返回取消函数。

标签: js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…