GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |
GeezerVison is showing github.com — feat(zones)!: deliver Observable read values as microtasks by armando-navarro · Pull Request #3833 · angular/angularfire Conversation
Collaborator
Checklist
DescriptionBuilds the
What this grants, measured on Angular 22.2 zone.js and zoneless apps, before and after:
What does not change:
What upgrading apps may notice:
Verification:
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactionsThe insideAngular scheduler was built over asyncScheduler, so every value from an Observable read reached its subscriber one setInterval turn after Firebase handed it over. A private AsapScheduler instance delivers at the next microtask checkpoint instead, still never synchronously. It is private because rxjs's shared asapScheduler cancels the rest of a batch when one action throws. Measured on Angular 22.2 apps, zone.js and zoneless: delivery moves ahead of a zero-delay timer in every run, change detection and ordering are unchanged, and a server render reports stable about a millisecond sooner. The compat AngularFireAuth streams move too. BREAKING CHANGE: Observable reads (collectionData, docData, authState, user, objectVal, listVal and the rest) now deliver at the next microtask checkpoint instead of after a zero-delay timer. A test that waits only for microtasks now sees a value whose source emits in a microtask. Code that orders its own setTimeout against a read's value sees the timer run after the value, not before. In a zoneless server render, a value arriving between stability and serialization reaches a hand-written TransferState entry but not the HTML. Fixes angular#3832
tyler-reitz
approved these changes
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Approving. I confirmed the new spec fails on both counts when
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
armando-navarro
added a commit
to armando-navarro/angularfire
that referenced
this pull request
angular#3833 moves every Observable read from a setInterval timer to the next microtask checkpoint. As a breaking change it needs a section in the upgrade guide: which tests now see a value they used to wait for, the setTimeout ordering flip, and the zoneless server render case for hand-written TransferState entries. Refs angular#3832
Collaborator
Author
All reactions
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page.
armando-navarro
enabled auto-merge (squash)
Uh oh!
There was an error while loading. Please reload this page.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ReviewersUh oh!
There was an error while loading. Please reload this page. AssigneesNo one assignedLabels
breaking change
ProjectsDevelopmentSuccessfully merging this pull request may close these issues. Uh oh!
There was an error while loading. Please reload this page. 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. | |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |