Skip to content

Commit c181903

Browse files
alan-agius4AndrewKushnir
authored andcommitted
refactor(core): reduce generated code (angular#59220)
This commit updates the defer code promises to reduce a couple of bytes. PR Close angular#59220
1 parent 8333ef7 commit c181903

File tree

1 file changed

+16
-19
lines changed

1 file changed

+16
-19
lines changed

packages/core/src/defer/triggering.ts

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -444,35 +444,32 @@ function populateHydratingStateForQueue(registry: DehydratedBlockRegistry, queue
444444

445445
// Waits for the next render cycle to complete
446446
function nextRender(injector: Injector): Promise<void> {
447-
let resolve: VoidFunction;
448-
const promise = new Promise<void>((resolveFn) => {
449-
resolve = resolveFn;
450-
});
451-
afterNextRender(() => resolve(), {injector});
452-
return promise;
447+
return new Promise<void>((resolveFn) => afterNextRender(resolveFn, {injector}));
453448
}
454449

455-
function triggerResourceLoadingForHydration(
450+
async function triggerResourceLoadingForHydration(
456451
dehydratedBlockId: string,
457452
dehydratedBlockRegistry: DehydratedBlockRegistry,
458-
) {
459-
let resolve: Function;
460-
const promise = new Promise((resolveFn) => (resolve = resolveFn));
453+
): Promise<void> {
461454
const deferBlock = dehydratedBlockRegistry.get(dehydratedBlockId);
462455
// Since we trigger hydration for nested defer blocks in a sequence (parent -> child),
463456
// there is a chance that a defer block may not be present at hydration time. For example,
464457
// when a nested block was in an `@if` condition, which has changed.
465-
if (deferBlock !== null) {
466-
const {tNode, lView} = deferBlock;
467-
const lDetails = getLDeferBlockDetails(lView, tNode);
468-
onDeferBlockCompletion(lDetails, () => resolve());
469-
triggerDeferBlock(TriggerType.Hydrate, lView, tNode);
470-
458+
if (deferBlock === null) {
471459
// TODO(incremental-hydration): handle the cleanup for cases when
472460
// defer block is no longer present during hydration (e.g. `@if` condition
473461
// has changed during hydration/rendering).
462+
463+
return;
474464
}
475-
return promise;
465+
466+
const {tNode, lView} = deferBlock;
467+
const lDetails = getLDeferBlockDetails(lView, tNode);
468+
469+
return new Promise<void>((resolve) => {
470+
onDeferBlockCompletion(lDetails, resolve);
471+
triggerDeferBlock(TriggerType.Hydrate, lView, tNode);
472+
});
476473
}
477474

478475
/**
@@ -490,7 +487,7 @@ function onDeferBlockCompletion(lDetails: LDeferBlockDetails, callback: VoidFunc
490487
* Determines whether specific trigger types should be attached during an instruction firing
491488
* to ensure the proper triggers for a given type are used.
492489
*/
493-
export function shouldAttachTrigger(triggerType: TriggerType, lView: LView, tNode: TNode) {
490+
export function shouldAttachTrigger(triggerType: TriggerType, lView: LView, tNode: TNode): boolean {
494491
if (triggerType === TriggerType.Regular) {
495492
return shouldAttachRegularTrigger(lView, tNode);
496493
} else if (triggerType === TriggerType.Hydrate) {
@@ -506,7 +503,7 @@ export function shouldAttachTrigger(triggerType: TriggerType, lView: LView, tNod
506503
* `deferOn*` and `deferHydrateOn*` triggers, to make sure only one of the trigger
507504
* types is active for a block with the current state.
508505
*/
509-
function shouldAttachRegularTrigger(lView: LView, tNode: TNode) {
506+
function shouldAttachRegularTrigger(lView: LView, tNode: TNode): boolean {
510507
const injector = lView[INJECTOR];
511508

512509
const tDetails = getTDeferBlockDetails(lView[TVIEW], tNode);

0 commit comments

Comments
 (0)