-
-
Notifications
You must be signed in to change notification settings - Fork 897
Closed
Description
Based on lodash _.throttle.
Use case: I want to publish an update to a websocket at most any given time.Duration
. So basically like the already existing debounce, but limiting with delay, not delaying until end.
Working with onboard functions, I came up with something like this:
delay := 500 * time.Millisecond
internalInvoke, cancel = lo.NewDebounceBy(delay, func(key int64, count int) {
// .... do stuff
})
throttle = func() {
internalInvoke(time.Now().Round(delay).UnixNano())
}
So in the end, calling throttle()
will put the rounded nano time in a bucket for debounce and that bucket will be triggered after delay
is no longer inside the same rounding range.
Not sure what to do with cancel
though.
Lee-Minjea, smallfish06 and a-menshchikov
Metadata
Metadata
Assignees
Labels
No labels