节流
2025-4-20
| 2025-4-20
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password

一、Throttle 基本概念与需求

节流(throttle)
在频繁触发事件时,每隔固定时间(delay)最多执行一次函数调用。
  • 默认行为:
    • 立即执行首次调用。
    • 冷却期内忽略后续调用。
  • 额外需求(Trailing):
    • 若在冷却期内发生调用,需在冷却期结束后自动执行一次。

二、基础实现(无 Trailing)

最简单的 throttle 实现,仅在超过冷却期后允许执行:
  • 仅首次立即执行。
  • 冷却期内触发全部忽略。

三、添加 Trailing 实现

添加定时器(timer)实现 trailing 行为:
实现思路
  • 在原基础上记录冷却期内最后一次调用的参数。
  • 添加 timer,在冷却期结束时执行 trailing 调用。
  • 冷却期内如果存在调用,记录其参数。
  • 若开启 trailing,且未设置 timer,则创建一个 timer,在冷却期结束时调用。

四、行为对比表

情况
remain <= 0
trailing
timer 存在
行为
1
任意
任意
立即执行
2
false
任意
忽略(节流)
3
true
设置 timer trailing 执行
4
true
更新参数,不设置新 timer

五、实现总结

  • 基础版本:仅简单的时间戳判断实现节流。
  • trailing 版本:在原基础上增加缓存参数与定时器,实现 trailing 功能。
以上即为 throttle 函数(含 trailing)的一步步优化实现过程。
  • linux
  • 开发
  • CORS理解v2从零开始实现debounce
    Loading...