Menu

unstable_after

unstable_after ermöglicht es Ihnen, Arbeiten zu planen, die nach Abschluss einer Antwort (oder Vorrendering) ausgeführt werden. Dies ist nützlich für Aufgaben und andere Nebeneffekte, die die Antwort nicht blockieren sollten, wie Logging und Analysen.

Es kann in Server-Komponenten (einschließlich generateMetadata), Server-Aktionen, Route-Handlern und Middleware verwendet werden.

Die Funktion akzeptiert einen Callback, der nach Abschluss der Antwort (oder Vorrendering) ausgeführt wird:

app/layout.tsx
TypeScript
import { unstable_after as after } from 'next/server'
// Benutzerdefinierte Logging-Funktion
import { log } from '@/app/utils'
 
export default function Layout({ children }: { children: React.ReactNode }) {
  after(() => {
    // Wird nach dem Rendern und Senden des Layouts ausgeführt
    log()
  })
  return <>{children}</>
}

Hinweis: unstable_after ist keine Dynamische API, und sein Aufruf führt nicht dazu, dass eine Route dynamisch wird. Wenn es innerhalb einer statischen Seite verwendet wird, wird der Callback zur Bauzeit ausgeführt oder wenn eine Seite neu validiert wird.

Referenz

Parameter

  • Eine Callback-Funktion, die nach Abschluss der Antwort (oder Vorrendering) ausgeführt wird.

Dauer von Serverless-Funktionen

unstable_after wird für die Standard- oder konfigurierte maximale Dauer einer Serverless-Funktion der Plattform ausgeführt. Falls Ihre Plattform dies unterstützt, können Sie den Timeout-Grenzwert mithilfe der maxDuration Route-Segment-Konfiguration festlegen.

Hinweise

  • unstable_after wird auch ausgeführt, wenn die Antwort nicht erfolgreich abgeschlossen wurde, einschließlich wenn ein Fehler geworfen oder notFound oder redirect aufgerufen wird.
  • Sie können React cache verwenden, um Funktionen zu deduplizieren, die innerhalb von unstable_after aufgerufen werden.
  • cookies können innerhalb von unstable_after nicht gesetzt werden, da die Antwort bereits gesendet wurde.
  • Dynamische APIs können nicht innerhalb von unstable_after aufgerufen werden. Rufen Sie sie außerhalb von unstable_after auf und verwenden Sie das von ihnen zurückgegebene Objekt.
  • unstable_after kann in anderen unstable_after-Aufrufen verschachtelt werden. Sie können beispielsweise Utility-Funktionen erstellen, die unstable_after-Aufrufe umschließen, um zusätzliche Funktionalität hinzuzufügen.

Alternativen

Der Anwendungsfall für unstable_after besteht darin, Sekundäraufgaben zu verarbeiten, ohne die primäre Antwort zu blockieren. Es ähnelt der Verwendung von waitUntil() der Plattform oder dem Entfernen von await von einem Promise, unterscheidet sich aber wie folgt:

  • waitUntil(): akzeptiert ein Promise und reiht eine Aufgabe in die Warteschlange ein, die während des Lebenszyklus der Anfrage ausgeführt wird, wohingegen unstable_after einen Callback akzeptiert, der nach Abschluss der Antwort ausgeführt wird.
  • Entfernen von await: beginnt während der Antwort mit der Ausführung und verwendet Ressourcen. Es ist auch in Serverless-Umgebungen nicht zuverlässig, da die Funktion die Berechnung sofort nach dem Senden der Antwort stoppt und möglicherweise die Aufgabe unterbricht.

Wir empfehlen die Verwendung von unstable_after, da es entwickelt wurde, um andere Next.js-APIs und -Kontexte zu berücksichtigen.

VersionshistorieBeschreibung
v15.0.0-rcunstable_after eingeführt.