当前位置:首页 > JavaScript

js实现节流

2026-04-05 18:27:36JavaScript

节流的概念

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

实现方法

方法1:时间戳版

通过比较当前时间与上一次执行时间,决定是否执行函数。

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

特点

  • 首次触发立即执行。
  • 停止触发后不会执行最后一次调用。

方法2:定时器版

通过定时器延迟执行函数,确保间隔内仅有一次执行。

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

特点

  • 首次触发延迟执行。
  • 停止触发后会执行最后一次调用。

方法3:结合版(推荐)

结合时间戳和定时器,实现首尾均执行的节流。

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

特点

  • 首次和最后一次均会执行。
  • 间隔内严格保证一次执行。

使用示例

监听滚动事件并节流处理:

js实现节流

const handleScroll = throttle(() => {
  console.log('Scroll event throttled');
}, 200);

window.addEventListener('scroll', handleScroll);

应用场景

  • 页面滚动加载更多内容。
  • 输入框实时搜索建议(减少请求频率)。
  • 窗口大小调整事件优化。

标签: js
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

利用js实现

利用js实现

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