fix(debounceFilter): invoke on maxWait with the latest invoker #4497
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #3665
Closes #4473
A filter works by binding a watch callback and its args every time the watcher fires. This bound function is then held back until your "filter" calls its
invoke
parameter.In
debounceFilter
, we setup amaxWait
timer to fire after a certain amount of time. Once this fires, it callsinvoke
.The problem here is that the
invoke
will be the paired cb/args from the point in time where we started the timer.For example:
To fix this, i've added
lastInvoker
, which is the last invoke function we created for this filter. Once the max timer fires, we will clear the regular timer, and calllastInvoker
(which a regular timer originally set up).Before submitting the PR, please make sure you do the following
fixes #123
).