Skip to content

Commit 36130b2

Browse files
crisbetoAndrewKushnir
authored andcommitted
fix(core): don't schedule timer triggers on the server (#55605)
Fixes that even though we weren't rendering the deferred block the server, we were still triggering the timeout which can delay the response. Fixes #55475. PR Close #55605
1 parent ce672c6 commit 36130b2

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

packages/core/src/defer/instructions.ts

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -522,9 +522,14 @@ function scheduleDelayedTrigger(
522522
const tNode = getCurrentTNode()!;
523523

524524
renderPlaceholder(lView, tNode);
525-
const cleanupFn = scheduleFn(() => triggerDeferBlock(lView, tNode), lView);
526-
const lDetails = getLDeferBlockDetails(lView, tNode);
527-
storeTriggerCleanupFn(TriggerType.Regular, lDetails, cleanupFn);
525+
526+
// Only trigger the scheduled trigger on the browser
527+
// since we don't want to delay the server response.
528+
if (isPlatformBrowser(lView[INJECTOR]!)) {
529+
const cleanupFn = scheduleFn(() => triggerDeferBlock(lView, tNode), lView);
530+
const lDetails = getLDeferBlockDetails(lView, tNode);
531+
storeTriggerCleanupFn(TriggerType.Regular, lDetails, cleanupFn);
532+
}
528533
}
529534

530535
/**
@@ -536,15 +541,20 @@ function scheduleDelayedPrefetching(
536541
scheduleFn: (callback: VoidFunction, lView: LView) => VoidFunction,
537542
) {
538543
const lView = getLView();
539-
const tNode = getCurrentTNode()!;
540-
const tView = lView[TVIEW];
541-
const tDetails = getTDeferBlockDetails(tView, tNode);
542544

543-
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
544-
const lDetails = getLDeferBlockDetails(lView, tNode);
545-
const prefetch = () => triggerPrefetching(tDetails, lView, tNode);
546-
const cleanupFn = scheduleFn(prefetch, lView);
547-
storeTriggerCleanupFn(TriggerType.Prefetch, lDetails, cleanupFn);
545+
// Only trigger the scheduled trigger on the browser
546+
// since we don't want to delay the server response.
547+
if (isPlatformBrowser(lView[INJECTOR]!)) {
548+
const tNode = getCurrentTNode()!;
549+
const tView = lView[TVIEW];
550+
const tDetails = getTDeferBlockDetails(tView, tNode);
551+
552+
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
553+
const lDetails = getLDeferBlockDetails(lView, tNode);
554+
const prefetch = () => triggerPrefetching(tDetails, lView, tNode);
555+
const cleanupFn = scheduleFn(prefetch, lView);
556+
storeTriggerCleanupFn(TriggerType.Prefetch, lDetails, cleanupFn);
557+
}
548558
}
549559
}
550560

0 commit comments

Comments
 (0)