Proposal: Add throttle
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.
I was looking for 'throttle' too.
Hi @samber, if there is no PR working on this currently. I would like to make one.
and Please pardon my absence of acknowledge on twitter, I don't have twitter account.