当前位置:首页 > JavaScript

节流实现js

2026-04-06 12:00:22JavaScript

节流实现方法

节流(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 timeoutId = null;
  return function(...args) {
    if (!timeoutId) {
      timeoutId = setTimeout(() => {
        func.apply(this, args);
        timeoutId = null;
      }, delay);
    }
  };
}

定时器实现确保函数在延迟结束后执行,首次调用不会立即执行,但会确保最后一次调用被执行。

结合时间戳和定时器

function throttle(func, delay) {
  let lastTime = 0;
  let timeoutId = null;
  return function(...args) {
    const now = Date.now();
    const remaining = delay - (now - lastTime);

    if (remaining <= 0) {
      if (timeoutId) {
        clearTimeout(timeoutId);
        timeoutId = null;
      }
      func.apply(this, args);
      lastTime = now;
    } else if (!timeoutId) {
      timeoutId = setTimeout(() => {
        func.apply(this, args);
        timeoutId = null;
        lastTime = Date.now();
      }, remaining);
    }
  };
}

这种实现结合了两种方法的优点,确保首次调用立即执行,最后一次调用也会被执行。

使用场景

节流适用于高频触发的事件,如:

节流实现js

  • 滚动事件(scroll)
  • 鼠标移动事件(mousemove)
  • 窗口大小改变(resize)
  • 键盘输入(keyup/keydown)

注意事项

  • 节流时间间隔应根据实际需求调整,过短可能达不到效果,过长可能影响用户体验
  • 确保清除定时器避免内存泄漏
  • 在React等框架中使用时,注意绑定正确的this上下文

以上方法可以根据具体需求选择使用,结合时间戳和定时器的实现通常能提供最佳的用户体验。

标签: js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…