after
after
permet de planifier l'exécution de tâches après la fin d'une réponse (ou d'un prérendu). C'est utile pour les tâches et autres effets secondaires qui ne devraient pas bloquer la réponse, comme les logs et les analyses.
Elle peut être utilisée dans les Composants Serveur (y compris generateMetadata
), les Actions Serveur, les Gestionnaires de Route, et le Middleware.
La fonction accepte une callback qui sera exécutée après la fin de la réponse (ou du prérendu) :
Bon à savoir :
after
n'est pas une API Dynamique et son appel ne rend pas une route dynamique. Si elle est utilisée dans une page statique, la callback s'exécutera au moment du build, ou à chaque revalidation de page.
Référence
Paramètres
- Une fonction callback qui sera exécutée après la fin de la réponse (ou du prérendu).
Durée
after
s'exécutera pendant la durée maximale par défaut de la plateforme ou configurée pour votre route. Si votre plateforme le supporte, vous pouvez configurer la limite de timeout en utilisant la config de segment de route maxDuration
.
Bon à savoir
after
s'exécutera même si la réponse ne s'est pas terminée avec succès. Y compris lorsqu'une erreur est levée ou quenotFound
ouredirect
est appelé.- Vous pouvez utiliser
cache
de React pour dédupliquer les fonctions appelées dansafter
. after
peut être imbriqué dans d'autres appelsafter
, par exemple pour créer des fonctions utilitaires qui encapsulent des appelsafter
pour ajouter des fonctionnalités supplémentaires.
Exemples
Avec les APIs de requête
Vous pouvez utiliser les APIs de requête comme cookies
et headers
dans after
pour les Actions Serveur et les Gestionnaires de Route. C'est utile pour logger des activités après une mutation. Par exemple :
Cependant, vous ne pouvez pas utiliser ces APIs de requête dans after
pour les Composants Serveur. En effet, Next.js a besoin de savoir quelle partie de l'arbre accède aux APIs de requête pour supporter le Prérendu Partiel, mais after
s'exécute après le cycle de rendu de React.
Support des Plateformes
Option de Déploiement | Supporté |
---|---|
Serveur Node.js | Oui |
Conteneur Docker | Oui |
Export Statique | Non |
Adaptateurs | Dépend de la plateforme |
Apprenez comment configurer after
pour un hébergement autonome de Next.js.
Référence : support de
L'utilisation de after
pour les plateformes serverlessafter
dans un contexte serverless nécessite d'attendre la fin des tâches asynchrones après l'envoi de la réponse. Dans Next.js et Vercel, cela est réalisé avec une primitive appelée waitUntil(promise)
, qui prolonge la durée d'une invocation serverless jusqu'à ce que toutes les promesses passées à waitUntil
soient résolues.
Si vous souhaitez que vos utilisateurs puissent utiliser after
, vous devrez fournir votre propre implémentation de waitUntil
qui se comporte de manière analogue.
Lorsque after
est appelée, Next.js accédera à waitUntil
comme ceci :
Ce qui signifie que globalThis[Symbol.for('@next/request-context')]
est censé contenir un objet comme ceci :
Voici un exemple d'implémentation.
Historique des Versions
Historique des Versions | Description |
---|---|
v15.1.0 | after devient stable. |
v15.0.0-rc | unstable_after introduite. |