fix: don't execute rescheduled animation frame and asap actions in flush #5399
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.
Description:
This PR fixes a problem with the
animationFrame
andasap
schedulers. The loop initialization logic in theflush
implementation for both schedulers was incorrect and resulted in the execution of any actions that were rescheduled when executed.This fixes the problem of the animation frame scheduler effecting too many notifications - see #4972. Regarding that issue, the
of(0, animationFrameScheduler).pipe(repeat())
snippet 'works' only because the implicit unsubscription cancels the action's additionalrequestAnimationFrame
call.The PR adds failing tests for both schedulers and then fixes the problems.
Related issue (if exists): #4972 and #5397