Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Il est important de gérer le cycle de vie d'une fonction pour s'assurer qu'elle se résout correctement. En arrêtant correctement les fonctions, vous pouvez éviter des frais excessifs liés à des fonctions qui s'exécutent trop longtemps ou qui bouclent à l'infini. Vous pouvez également vous assurer que l'instance Cloud Functions exécutant votre fonction ne s'arrête pas avant que votre fonction n'atteigne sa condition ou son état de fin avec succès.
Utilisez ces approches recommandées pour gérer le cycle de vie de vos fonctions :
Résolvez les fonctions qui effectuent un traitement asynchrone (également appelées "fonctions d'arrière-plan") en renvoyant une promesse JavaScript.
Arrêtez les fonctions HTTP avec res.redirect(), res.send() ou res.end().
Mettez fin à une fonction synchrone avec une instruction return;.
Simplifier le code asynchrone avec les promesses JavaScript
Les promesses sont une alternative moderne aux rappels pour le code asynchrone. Une promesse représente une opération et la valeur future qu'elle peut renvoyer. Il vous permet également de propager les erreurs de la même manière que try/catch dans le code synchrone. Pour en savoir plus sur les promesses dans le SDK Firebase, consultez le blog Firebase. Pour en savoir plus sur les promesses en général, consultez MDN.
Fonctionnement des promesses avec les fonctions
Lorsque vous renvoyez une promesse JavaScript à une fonction, cette fonction continue de s'exécuter jusqu'à ce que la promesse soit résolue ou refusée. Pour indiquer qu'une fonction a terminé son travail avec succès, la promesse doit être résolue. Pour indiquer une erreur, la promesse doit être refusée. Cela signifie que vous n'avez besoin de gérer que les erreurs que vous souhaitez.
Le code suivant prend un refFirebase Realtime Database et définit sa valeur sur "world!". En renvoyant le résultat de set, votre fonction est assurée de continuer à s'exécuter jusqu'à ce que l'écriture asynchrone de la chaîne dans la base de données soit entièrement terminée :
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/05 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/05 (UTC)."],[],[],null,["\u003cbr /\u003e\n\nIt's important to manage the lifecycle of a function to ensure that it resolves\nproperly. By terminating functions correctly, you can avoid excessive charges\nfrom functions that run for too long or loop infinitely. Also, you can make sure\nthat the Cloud Functions instance running your function does not shut down\nbefore your function successfully reaches its terminating condition or state.\n\nUse these recommended approaches to manage the lifecycle of your functions:\n\n- Resolve functions that perform **asynchronous** processing (also known as \"background functions\") by returning a [JavaScript\n promise](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n- Terminate **HTTP functions** with `res.redirect()`, `res.send()`, or `res.end()`.\n- Terminate a **synchronous** function with a `return;` statement.\n\n| **Caution:** In all cases, be careful to avoid any situation in which the function's result actually retriggers the function --- for example, a function triggered by writes to a specific Realtime Database path that concludes by writing to that same path.\n\nSimplify asynchronous code with JavaScript promises\n\nPromises are a modern alternative to callbacks for asynchronous code. A promise\nrepresents an operation and the future value it may return. It also lets you\npropagate errors similar to try/catch in synchronous code. You can read about\npromises in the Firebase SDK on [The Firebase\nBlog](https://firebase.googleblog.com/2016/01/keeping-our-promises-and-callbacks_76.html),\nand promises in general on\n[MDN](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n\nHow promises work with functions\n\nWhen you return a JavaScript promise to a function, that function\nkeeps running until the promise is resolved or rejected. To indicate that a\nfunction has completed its work successfully, the promise should be resolved. To\nindicate an error, the promise should be rejected. This means you only need to\nhandle errors that you want to.\n\nThe following code takes a Firebase Realtime Database `ref` and sets its value to\n`\"world!\"`. By returning the result of `set`, your function is guaranteed to\nkeep running until the asynchronous work of writing the string to the database\nis fully completed: \n\n // Always change the value of \"/hello\" to \"world!\"\n exports.hello = functions.database.ref('/hello').onWrite(event =\u003e {\n // set() returns a promise. We keep the function alive by returning it.\n return event.data.ref.set('world!').then(() =\u003e {\n console.log('Write succeeded!');\n });\n });\n\nExamples in context\n\nMost of our Cloud Functions [code\nsamples](https://github.com/firebase/functions-samples)\ninclude examples of proper function termination. Here are a few that demonstrate\ntypical cases:\n\n- [Realtime Database\n trigger](https://github.com/firebase/functions-samples/tree/main/Node-1st-gen/quickstarts/uppercase-rtdb/functions/index.js): an HTTP function followed by a redirect\n- [Cloud Storage\n trigger](https://github.com/firebase/functions-samples/tree/main/Node-1st-gen/quickstarts/thumbnails/functions/index.js): A storage download followed by `then`\n- [Webhook on Realtime Database\n write](https://github.com/firebase/functions-samples//tree/main/Node-1st-gen/minimal-webhook/functions/index.js): An error thrown inside a `then` clause\n- [Periodically delete unused\n accounts](https://github.com/firebase/functions-samples//tree/main/Node-1st-gen/delete-unused-accounts-cron/functions/index.js): A rejected promise"]]