Como chamar funções assíncronas de um Firebase Cloud Function
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
Tente anexar async na frente da função para usar await.
exports.myFunction = functions.https.onCall(async(someData, context) => {
return await someAsyncFunction();
});
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.