Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Sincronización, asíncronismo y promesas

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Es importante administrar el ciclo de vida de una función para garantizar que se resuelva correctamente. Al finalizar las funciones correctamente, puede evitar cargos excesivos por funciones que se ejecutan durante demasiado tiempo o que se repiten infinitamente. Además, puede asegurarse de que la instancia de Cloud Functions que ejecuta su función no se apague antes de que su función alcance con éxito su condición o estado de terminación.

Utilice estos enfoques recomendados para administrar el ciclo de vida de sus funciones:

  • Resuelva funciones que realizan procesamiento asíncrono (también conocidas como "funciones en segundo plano") devolviendo una promesa de JavaScript .
  • Termine las funciones HTTP con res.redirect() , res.send() o res.end() .
  • Terminar una función síncrona con un return; declaración.

Simplifique el código asíncrono con promesas de JavaScript

Las promesas son una alternativa moderna a las devoluciones de llamada para código asíncrono. Una promesa representa una operación y el valor futuro que puede devolver. También le permite propagar errores similares a try/catch en código síncrono. Puede leer acerca de las promesas en Firebase SDK en The Firebase Blog y las promesas en general en MDN .

Cómo funcionan las promesas con las funciones

Cuando devuelve una promesa de JavaScript a una función, esa función sigue ejecutándose hasta que la promesa se resuelva o rechace. Para indicar que una función ha completado su trabajo con éxito, la promesa debe resolverse. Para indicar un error, la promesa debe ser rechazada. Esto significa que solo necesita manejar los errores que desee.

El siguiente código toma una ref de base de datos en tiempo real de Firebase y establece su valor en "world!" . Al devolver el resultado de set , se garantiza que su función seguirá ejecutándose hasta que se complete por completo el trabajo asincrónico de escribir la cadena en la base de datos:

// 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!');
  });
});

Ejemplos en contexto

La mayoría de nuestras muestras de código de Cloud Functions incluyen ejemplos de terminación de función adecuada. Aquí hay algunos que demuestran casos típicos: