Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Synchronisation, asynchrone et promesses

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 terminant correctement les fonctions, vous pouvez éviter des charges excessives provenant de fonctions qui s'exécutent trop longtemps ou bouclent à l'infini. En outre, vous pouvez 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.

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 .
  • Terminez les fonctions HTTP avec res.redirect() , res.send() ou res.end() .
  • Terminer une fonction synchrone avec un return; déclaration.

Simplifiez 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 des erreurs similaires à try/catch dans le code synchrone. Vous pouvez en savoir plus sur les promesses dans le SDK Firebase sur le blog Firebase et sur les promesses en général sur MDN .

Comment les promesses fonctionnent 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 rejeté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 rejetée. Cela signifie que vous n'avez qu'à gérer les erreurs que vous souhaitez.

Le code suivant prend une ref Firebase 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 le travail asynchrone d'écriture de la chaîne dans la base de données soit entièrement terminé :

// Always change the value of "/hello" to "world!"
exports.hello = functions.database.ref('/hello').onWrite(event => {
  // set() returns a promise. We keep the function alive by returning it.
  return event.data.ref.set('world!').then(() => {
    console.log('Write succeeded!');
  });
});

Exemples en contexte

La plupart de nos exemples de code Cloud Functions incluent des exemples de terminaison de fonction appropriée. En voici quelques-uns qui illustrent des cas typiques :