function createRateLimitedValue<TValue>(value, initialOptions): [Accessor<TValue>, SolidRateLimiter<Setter<TValue>>]
function createRateLimitedValue<TValue>(value, initialOptions): [Accessor<TValue>, SolidRateLimiter<Setter<TValue>>]
定义于:rate-limiter/createRateLimitedValue.ts:50
一个高级别的 Solid 钩子,用于创建值的速率限制版本,该值在时间窗口内最多更新特定次数。 此钩子在内部使用 Solid 的 createSignal 来管理速率限制状态。
速率限制是一种简单的“硬限制”方法——它允许所有更新,直到达到限制,然后阻止后续更新,直到窗口重置。与节流或防抖不同,它不会尝试隔开或智能地折叠更新。这可能导致快速更新的爆发,然后是一段没有更新的时期。
速率限制器支持两种类型的窗口:
对于更平滑的更新模式,请考虑:
速率限制主要应用于需要强制执行严格限制的情况,例如 API 速率限制。
该钩子返回一个包含以下内容的元组:
要更直接地控制速率限制行为而不进行 Solid 状态管理, 请考虑改用较低级别的 createRateLimiter 钩子。
• TValue
Accessor<TValue>
RateLimiterOptions<Setter<TValue>>
[Accessor<TValue>, SolidRateLimiter<Setter<TValue>>]
// 基本速率限制 - 滑动窗口内每分钟最多更新 5 次
const [rateLimitedValue, rateLimiter] = createRateLimitedValue(rawValue, {
limit: 5,
window: 60000,
windowType: 'sliding'
});
// 使用速率限制值
console.log(rateLimitedValue()); // 访问当前的速率限制值
// 控制速率限制器
rateLimiter.reset(); // 重置速率限制窗口
// 基本速率限制 - 滑动窗口内每分钟最多更新 5 次
const [rateLimitedValue, rateLimiter] = createRateLimitedValue(rawValue, {
limit: 5,
window: 60000,
windowType: 'sliding'
});
// 使用速率限制值
console.log(rateLimitedValue()); // 访问当前的速率限制值
// 控制速率限制器
rateLimiter.reset(); // 重置速率限制窗口