当前位置:首页 > 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);
    }
  };
}

使用场景示例

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

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

注意事项

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

js实现节流

标签: js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…