【问题标题】:How to call async functions from a Firebase Cloud Function如何从 Firebase 云函数调用异步函数
【发布时间】:2021-02-10 21:48:45
【问题描述】:

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

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

});

如何调用异步函数?

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

    return await someAsyncFunction();

});

文档声明要返回一个承诺,但我不确定如何将现有的异步函数包装成我可以返回的承诺。

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

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

【问题讨论】:

    标签: javascript node.js firebase google-cloud-functions


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以将回调函数传递给onCall async,这样您就可以在其中使用 await:

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

      或者,您可以简单地返回someAsyncFunction返回的承诺:

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

      在任何一种情况下,您都必须返回一个承诺,该承诺会使用数据进行解析以序列化并发送到客户端应用程序。这两种方法都可以做到。

      【讨论】:

        猜你喜欢
        • 2019-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-20
        • 1970-01-01
        • 2017-11-10
        • 2020-03-09
        相关资源
        最近更新 更多