当前位置:首页 > JavaScript

js截流实现

2026-04-06 20:13:46JavaScript

截流(Throttle)的概念

截流是一种控制函数执行频率的技术,确保函数在特定时间间隔内只执行一次。常用于优化高频事件(如滚动、输入)的性能。

基础实现

使用时间戳判断是否执行函数:

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

包含尾部调用版本

确保最后一次触发会被执行:

function throttle(fn, delay) {
  let timer = null;
  let lastTime = 0;

  return function(...args) {
    const now = Date.now();
    const remaining = delay - (now - lastTime);

    clearTimeout(timer);

    if (remaining <= 0) {
      fn.apply(this, args);
      lastTime = now;
    } else {
      timer = setTimeout(() => {
        fn.apply(this, args);
        lastTime = Date.now();
      }, remaining);
    }
  };
}

使用场景示例

滚动事件优化:

window.addEventListener('scroll', throttle(() => {
  console.log('处理滚动逻辑');
}, 200));

与防抖(Debounce)的区别

  • 截流:固定时间间隔执行(如每200ms)
  • 防抖:停止触发后延迟执行(如输入停止500ms后)

现代浏览器原生支持

部分浏览器已支持requestIdleCallback

js截流实现

window.requestIdleCallback(() => {
  // 空闲时执行的任务
});

注意事项

  • 时间间隔不宜过短(建议≥16ms,对应60fps)
  • 在React等框架中可能需要使用useCallback包裹
  • 清除定时器避免内存泄漏

标签: js
分享给朋友:

相关文章

js实现

js实现

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

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…