Como chamar funções assíncronas de um Firebase Cloud Function

Oct 28 2020

Estou exportando uma função de nuvem do Firebase que posso chamar de meu aplicativo iOS.

exports.myFunction = functions.https.onCall((someData, context) => {

});

Como chamo uma função assíncrona?

exports.myFunction = functions.https.onCall((someData, context) => {

    return await someAsyncFunction();

});

A documentação afirma para retornar uma promessa, mas não tenho certeza de como envolver uma função assíncrona existente em uma promessa que posso retornar.

https://firebase.google.com/docs/functions/callable

Para retornar dados após uma operação assíncrona, retorne uma promessa. Os dados retornados pela promessa são enviados de volta ao cliente. Por exemplo, você pode retornar um texto limpo que a função chamável escreveu no Realtime Database:

Respostas

2 deepak Oct 28 2020 at 20:58

Tente anexar async na frente da função para usar await.

exports.myFunction = functions.https.onCall(async(someData, context) => {

  return await someAsyncFunction();

});

1 DougStevenson Oct 28 2020 at 21:41

Você pode fazer com que a função de retorno de chamada seja passada onCallassíncrona para que possa usar await dentro dela:

exports.myFunction = functions.https.onCall(async (someData, context) => {
    return await someAsyncFunction();
});

Ou você pode simplesmente devolver a promessa retornada por someAsyncFunction:

exports.myFunction = functions.https.onCall((someData, context) => {
    return someAsyncFunction();
});

Em qualquer caso, você é obrigado a retornar uma promessa que resolve com os dados para serializar e enviar para o aplicativo cliente. Ambos os métodos farão isso.