Skip to content

Commit 3818436

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 c9f27b4 commit 3818436

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
@@ -424,9 +424,14 @@ function scheduleDelayedTrigger(
424424
const tNode = getCurrentTNode()!;
425425

426426
renderPlaceholder(lView, tNode);
427-
const cleanupFn = scheduleFn(() => triggerDeferBlock(lView, tNode), lView);
428-
const lDetails = getLDeferBlockDetails(lView, tNode);
429-
storeTriggerCleanupFn(TriggerType.Regular, lDetails, cleanupFn);
427+
428+
// Only trigger the scheduled trigger on the browser
429+
// since we don't want to delay the server response.
430+
if (isPlatformBrowser(lView[INJECTOR]!)) {
431+
const cleanupFn = scheduleFn(() => triggerDeferBlock(lView, tNode), lView);
432+
const lDetails = getLDeferBlockDetails(lView, tNode);
433+
storeTriggerCleanupFn(TriggerType.Regular, lDetails, cleanupFn);
434+
}
430435
}
431436

432437
/**
@@ -437,15 +442,20 @@ function scheduleDelayedTrigger(
437442
function scheduleDelayedPrefetching(
438443
scheduleFn: (callback: VoidFunction, lView: LView) => VoidFunction) {
439444
const lView = getLView();
440-
const tNode = getCurrentTNode()!;
441-
const tView = lView[TVIEW];
442-
const tDetails = getTDeferBlockDetails(tView, tNode);
443445

444-
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
445-
const lDetails = getLDeferBlockDetails(lView, tNode);
446-
const prefetch = () => triggerPrefetching(tDetails, lView, tNode);
447-
const cleanupFn = scheduleFn(prefetch, lView);
448-
storeTriggerCleanupFn(TriggerType.Prefetch, lDetails, cleanupFn);
446+
// Only trigger the scheduled trigger on the browser
447+
// since we don't want to delay the server response.
448+
if (isPlatformBrowser(lView[INJECTOR]!)) {
449+
const tNode = getCurrentTNode()!;
450+
const tView = lView[TVIEW];
451+
const tDetails = getTDeferBlockDetails(tView, tNode);
452+
453+
if (tDetails.loadingState === DeferDependenciesLoadingState.NOT_STARTED) {
454+
const lDetails = getLDeferBlockDetails(lView, tNode);
455+
const prefetch = () => triggerPrefetching(tDetails, lView, tNode);
456+
const cleanupFn = scheduleFn(prefetch, lView);
457+
storeTriggerCleanupFn(TriggerType.Prefetch, lDetails, cleanupFn);
458+
}
449459
}
450460
}
451461

0 commit comments

Comments
 (0)