Releases: github/mini-throttle
v2.1.1
What's Changed
- Add a release action by @koddsson in #14
- Create CODEOWNERS by @keithamus in #16
- fix: reset
innerStart
variable if passed time is greater thanwait
ms by @percy507 in #15
New Contributors
Full Changelog: v2.1.0...v2.1.1
v2.1.0
v2.0.1
v2.0.0
This release migrates the codebase to TypeScript, dropping Babel in the process.
The throttle
and debounce
functions can now pass a receiver (or "this") as an argument.
This also adds new TypeScript decorator support, decorators can be used by importing @github/mini-throttle/decorators
v1.0.7
v1.0.6
v1.0.5
1.0.5
mini-throttle
This is a package which provides throttle
and debounce
functions, with both
flow and TypeScript declarations, and a minimal code footprint (less than 60
lines, less than 350 bytes minified+gzipped)
throttling, debouncing, and everything inbetween
type ThrottleOptions = {
start?: boolean, // fire immediately on the first call
middle?: boolean, // if true, fire as soon as `wait` has passed
once?: boolean, // cancel after the first successful call
}
function throttle<T>(
callback: (...args: T[]) => any,
wait: number,
opts?: ThrottleOptions
): (...args: T[]) => void
function debounce<T>(
callback: (...args: T[]) => any,
wait: number,
opts?: ThrottleOptions
): (...args: T[]) => void
This package comes with two functions; throttle
and debounce
.
Both of these functions offer the exact same signature, because they're both
the same function - just with different opts
defaults:
throttle
opts default to{ start: true, middle: true, once: false }
.debounce
opts default to{ start: false, middle: false, once: false }
.
Each of the options changes when callback
gets called. The best way to
illustrate this is with a marble diagram.
for (let i = 1; i <= 10; ++i) {
fn(i)
await delay(50)
}
await delay(100)
| fn() | 1 2 3 4 5 6 7 8 9 10 |
| throttle(fn, 100) | 1 2 4 6 8 10 |
| throttle(fn, 100, {start: false}) | 2 4 6 8 10 |
| throttle(fn, 100, {middle: false}) | 1 10 |
| throttle(fn, 100, {once: true}) | 1 |
| throttle(fn, 100, {once: true, start: false})| 2 |
| debounce(fn, 100) | 10 |