after
after
ermöglicht es Ihnen, Arbeiten zu planen, die nach Abschluss einer Antwort (oder Vorberenderung) ausgeführt werden sollen. Dies ist nützlich für Aufgaben und andere Nebeneffekte, die die Antwort nicht blockieren sollten, wie z.B. Protokollierung und Analysen.
Die Funktion 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 Vorberenderung) ausgeführt wird:
Wissenswert:
after
ist keine dynamische API und ihr Aufruf führt nicht dazu, dass eine Route dynamisch wird. Wenn sie innerhalb einer statischen Seite verwendet wird, wird der Callback zum Build-Zeitpunkt oder bei einer Revalidierung der Seite ausgeführt.
Referenz
Parameter
- Eine Callback-Funktion, die nach Abschluss der Antwort (oder Vorberenderung) ausgeführt wird.
Dauer
after
läuft für die standardmäßige oder konfigurierte maximale Dauer Ihrer Route auf der Plattform. Wenn Ihre Plattform dies unterstützt, können Sie das Timeout-Limit mit der maxDuration
-Route-Segment-Konfiguration festlegen.
Wissenswert
after
wird auch dann ausgeführt, wenn die Antwort nicht erfolgreich abgeschlossen wurde. Einschließlich Fällen, in denen ein Fehler auftritt odernotFound
bzw.redirect
aufgerufen wird.- Sie können React
cache
verwenden, um Funktionen, die innerhalb vonafter
aufgerufen werden, zu deduplizieren. after
kann innerhalb andererafter
-Aufrufe verschachtelt werden, z.B. können Sie Utility-Funktionen erstellen, dieafter
-Aufrufe umschließen, um zusätzliche Funktionalität hinzuzufügen.
Beispiele
Mit Request-APIs
Sie können Request-APIs wie cookies
und headers
innerhalb von after
in Server-Aktionen und Route-Handlern verwenden. Dies ist nützlich für die Protokollierung von Aktivitäten nach einer Mutation. Beispiel:
Allerdings können Sie diese Request-APIs nicht innerhalb von after
in Server-Komponenten verwenden. Dies liegt daran, dass Next.js wissen muss, welcher Teil des Baums auf die Request-APIs zugreift, um Partielle Vorberenderung zu unterstützen, aber after
läuft nach dem Rendering-Lebenszyklus von React.
Plattformunterstützung
Bereitstellungsoption | Unterstützt |
---|---|
Node.js-Server | Ja |
Docker-Container | Ja |
Statischer Export | Nein |
Adapter | Plattformspezifisch |
Erfahren Sie, wie Sie after
konfigurieren, wenn Sie Next.js selbst hosten.
Referenz: Unterstützung von
Die Verwendung von after
für serverlose Plattformenafter
in einem serverlosen Kontext erfordert das Warten auf asynchrone Aufgaben nach dem Senden der Antwort. In Next.js und Vercel wird dies mit einem Primitiv namens waitUntil(promise)
erreicht, das die Lebensdauer einer serverlosen Invocation verlängert, bis alle an waitUntil
übergebenen Promises abgeschlossen sind.
Wenn Sie möchten, dass Ihre Benutzer after
verwenden können, müssen Sie Ihre eigene Implementierung von waitUntil
bereitstellen, die sich analog verhält.
Wenn after
aufgerufen wird, greift Next.js wie folgt auf waitUntil
zu:
Das bedeutet, dass globalThis[Symbol.for('@next/request-context')]
ein Objekt wie folgt enthalten sollte:
Hier ist ein Beispiel für die Implementierung.
Versionsverlauf
Versionsverlauf | Beschreibung |
---|---|
v15.1.0 | after wurde stabil. |
v15.0.0-rc | unstable_after eingeführt. |