用途:TanStack Pacer 用于控制函数执行频率与时机,提供防抖、节流、限流、排队和批处理。核心为框架无关的类,并针对 React 提供多抽象层级的 Hooks(实例、回调、状态、值)。
主要能力:Debouncer/debounce 等待空闲后执行,按设计不提供 maxWait;Throttler/throttle 保证等间隔执行,leading 与 trailing 默认均为 true;RateLimiter/rateLimit 支持固定或滑动窗口,超限调用会被拒绝;Queuer/queue 默认 FIFO,支持 LIFO、优先级与过期;AsyncQueuer/asyncQueue 支持并发控制、重试与错误回调;AsyncBatcher/asyncBatch 收集条目,在等待时间或最大数量后按批处理。React 侧提供 useDebouncer、useThrottledCallback、useRateLimiter、useQueuer、useAsyncQueuedState、useBatcher、useDebouncedState、useDebouncedValue 等。
使用方式:按需选择类或 Hook;在 React 中应使用 Hooks 创建实例以管理生命周期,手动实例需调用 cancel() 清理。所有工具支持 enabled: false 临时禁用。限流与节流可能拒绝调用,需检查状态或使用回调,RateLimiter 默认静默拒绝,可加 onReject 反馈。
适用场景:搜索输入防抖、滚动/缩放节流、API 限流、带并发控制的异步任务队列、将多次操作合并为单次请求。
限制:不适合简单一次性延迟(用 setTimeout)、基础设施层服务端限流(用中间件/API 网关)或复杂任务调度(用 BullMQ 等任务队列)。Debouncer 无 maxWait,需要等间隔执行应改用 Throttler;需要丢弃条目时不应使用 Queuer。若已有 tanstack-query 技能,数据获取与缓存管理应交给它,Pacer 负责控制请求频率。