fix(framework): make renderImmediately sync, fix lifecycle issues #1929
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.
RenderQueue.js
no longer manages promises at allrenderImmediately
is completely sync now and does not use the render queue. The render queue is only used byrenderDeferred
.renderDeferred
is async and awaits for queue processing to be over (but does not await for the "official" end of the render task - the Mutation Observer).UI5Element.js
there are 2 new flags:_inDOM
which is set immediately whenconnectedCallback
is called, and is unset immediately whendisconnectedCallback
is called. It prevents the component from entering the render queue if removed from DOM before it gets to it. And_fullyConnected
which is set before callingonEnterDOM
and unset after callingonExitDOM
. Thus we callonExitDOM
only if we calledonEnterDOM
, thus preventing lifecycle issues in the components implementation.So the following code:
can now run without exceptions thrown by
ResizeHandler.js
(as it is deregistered before ever being registered).closes: #1821