Finish pass on docs
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# Throttled Store
|
||||
|
||||
Utility for wrapping Svelte stores to throttle subscriber notifications, reducing update frequency for performance.
|
||||
|
||||
## Functions
|
||||
|
||||
### throttled(delay, store)
|
||||
|
||||
Creates a throttled version of a store that limits how often subscribers are notified.
|
||||
|
||||
**Parameters:**
|
||||
- `delay` - Throttle delay in milliseconds (0 disables throttling)
|
||||
- `store` - Any readable Svelte store
|
||||
|
||||
**Returns:** Store with throttled subscription behavior
|
||||
|
||||
When `delay` is 0, returns the original store unchanged. Otherwise, wraps the store so that subscribers receive updates at most once per delay period.
|
||||
|
||||
## Example
|
||||
|
||||
```typescript
|
||||
import {writable} from "svelte/store"
|
||||
import {throttled} from "@welshman/store"
|
||||
|
||||
// Create a regular store that updates frequently
|
||||
const fastStore = writable(0)
|
||||
|
||||
// Create a throttled version that only notifies every 100ms
|
||||
const slowStore = throttled(100, fastStore)
|
||||
|
||||
// Subscribe to both stores
|
||||
fastStore.subscribe(value => console.log("Fast:", value))
|
||||
slowStore.subscribe(value => console.log("Slow:", value))
|
||||
|
||||
// Rapidly update the store
|
||||
let count = 0
|
||||
const interval = setInterval(() => {
|
||||
fastStore.set(++count)
|
||||
|
||||
if (count >= 10) {
|
||||
clearInterval(interval)
|
||||
}
|
||||
}, 10) // Update every 10ms
|
||||
|
||||
// Output:
|
||||
// Fast: 1, Fast: 2, Fast: 3, ... (every update)
|
||||
// Slow: 1, Slow: 5, Slow: 10 (throttled to ~100ms intervals)
|
||||
```
|
||||
Reference in New Issue
Block a user