如何从 Firebase 云函数调用异步函数

Ber*_*lue 5 javascript node.js firebase google-cloud-functions

我正在导出一个可以从 iOS 应用程序调用的 Firebase 云函数。

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

});
Run Code Online (Sandbox Code Playgroud)

如何调用异步函数?

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

    return await someAsyncFunction();

});
Run Code Online (Sandbox Code Playgroud)

文档指出返回一个承诺,但我不确定如何将现有的异步函数包装到我可以返回的承诺中。

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

要在异步操作后返回数据,请返回一个 Promise。Promise 返回的数据被发送回客户端。例如,您可以返回可调用函数写入实时数据库的经过清理的文本:

dee*_*pak 9

尝试在函数前面附加 async 以使用 wait。

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

  return await someAsyncFunction();

});
Run Code Online (Sandbox Code Playgroud)


Dou*_*son 5

您可以将回调函数设置为onCall异步传递,这样您就可以在其中使用await:

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

或者,您可以简单地返回由以下方法返回的承诺someAsyncFunction

exports.myFunction = functions.https.onCall((someData, context) => {
    return someAsyncFunction();
});
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,您都有义务返回一个承诺,该承诺将解析数据以序列化并发送到客户端应用程序。这两种方法都可以做到这一点。