ReactiveX / rxjs

A reactive programming library for JavaScript
https://rxjs.dev
Apache License 2.0
30.44k stars 2.99k forks source link

auditTime(0, animationFrameScheduler) stops emiting unexpectedly. #7096

Open fdeslandes-wk opened 1 year ago

fdeslandes-wk commented 1 year ago

Describe the bug

Since version 7.5.0, there is a weird interaction between different observables using animationFrameScheduler, especially auditTime(0, animationFrameScheduler), which stops emitting when other observables using the animationFrameScheduler started concludes after the first event is sent to the audit.

This causes problems with Angular CDK virtual scroll viewport which stops working when other things in the application use the animationFrameScheduler on observables which concludes.

It seems related to the same changes which caused https://github.com/ReactiveX/rxjs/issues/7017.

Expected behavior

Other observables should not have side effects on the animationFrameScheduler Action from auditTime(0, animationFrameScheduler) and auditTime should keep emitting regardless of the recycling of animationFrameScheduler actions.

Reproduction code

See the StackBlitz code, which reproduces the issue.  The issue cannot be reproduced using rxJs 7.4.x. It is there since 7.5.x.

Reproduction URL

https://rxjs-afsbug-s5ubbu.stackblitz.io

https://stackblitz.com/edit/rxjs-afsbug-s5ubbu?file=index.ts

Version

7.5.0 - 7.5.7

Environment

Reproduced in Chrome and Firefox. If you cannot reproduce, try throttling CPU in the Chrome DevTools.

Additional context

No response

gabrielgagne commented 1 year ago

Same problem here

endoffline commented 1 year ago

We also have the same problem. In my case it leads to the Angular CDK virtual scroll viewport to not render the necessary elements which would be visible within the current viewport, as scroll events are not processed any longer.

gabrielgagne commented 1 year ago

Yes, I noticed this bug too after seeing cdk virtual scroll (and our other component relying on animationFrameScheduler) being messed up after updating past 7.4

endoffline commented 1 year ago

I've expanded the example @fdeslandes-wk and included the cdk-virtual-scroll-viewport to highlight the problem more prominently.

Have a look here: https://stackblitz.com/edit/angular-zdbuly?file=src%2Fmain.ts