【问题标题】:Delay Google Cloud Function延迟谷歌云功能
【发布时间】:2019-05-14 20:42:30
【问题描述】:

我有一个与 Google Firebase 配对的 swift iPhone 应用程序。在应用程序中,用户将完成一个动作(按下一个按钮)。此时,我想安排一个 Google Firebase 函数在用户操作后 45 分钟运行。但是,我希望在 iPhone 应用程序中完成另一个操作(按下按钮)时能够取消此功能。我可以使用计时器在 swift 内快速执行此操作,但如果用户关闭应用程序,这将不起作用。

我不反对使用第三方调度程序或类似的东西。欢迎提出任何建议。

我查看了可能重复的问题和答案 (Cloud Functions for Firebase trigger on time?) 但是,该答案中的大多数链接已被弃用且已过时。此外,这指的是重复安排一些事情。例如,每小时一次、每天一次等...我希望在触发(用户操作)后 45 分钟安排作业,并能够在 45 分钟窗口内取消作业。

【问题讨论】:

  • 您无法在您的应用中制作它。它必须在您的后端。你唯一的后端是你的 firebase 数据库吗?
  • 是的,我的后端是 Firebase。我不会反对为此功能添加另一个后端。可能是 AWS 内部的东西?
  • 例如,您可以在 AWS Lambda 上编写自己的代码,但是据我所知,AWS 没有为此提供即插即用服务

标签: swift firebase google-cloud-functions


【解决方案1】:

没有内置方法可以延迟 Cloud Function 上的触发,或在一定延迟后重新触发它。我能想到的使用 Cloud Functions 的最佳方法是设置定期触发器,如下所示:Cloud Functions for Firebase trigger on time?。然后在该周期性触发器中确定必须运行哪些作业。

【讨论】:

  • 是否有其他后端或服务可以做到这一点?可能是 AWS 内部的东西?
  • 这是在寻求技术推荐,这与 Stack Overflow 无关(因为它往往会吸引固执己见的答案)。
  • 这仍然是答案还是谷歌最近添加了延迟功能的功能?
  • 在产品层面上没有任何改变,尽管现在有一些不同的例子。我推荐阅读 Doug 的博客:medium.com/firebase-developers/…
【解决方案2】:

只要您可以通过 http 请求调用 Firebase 函数,您就可以使用 https://delayedrequest.com。

【讨论】:

    【解决方案3】:

    我最近遇到了一个类似的问题,使用Cloud Scheduler 和Firestore 解决了这个问题。我设置了一个作业,每 5 分钟触发一次云功能,以检查 Firestore 集合。它将检索有关何时触发云功能并触发它的数据。它还取决于您希望时间触发器有多准确。无缘无故一直触发它并不是最佳选择,但在我的情况下它起作用了。

    【讨论】:

      【解决方案4】:

      延迟的Cloud Task 对您有用吗?

      您可以create a Cloud Task that is delayed 并通过 HTTP 触发器调用您的函数。如果您的用户执行您要求的第二个操作,则可以取消该任务。 Cloud Tasks 有许多专用的client libraries,还有一个REST API。

      【讨论】:

        【解决方案5】:

        Javascript/Typescript 允许你延迟使用setTimeout 函数

        // time is in milliseconds
        function delay(time:number) {
          return new Promise(res => {
            setTimeout(() => {
              res("VALUE TO RESOLVE");
            }, time);
          });
        }
        

        然后通过 const res = await delay(1000); 调用它

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-14
          • 2021-02-01
          • 2020-09-03
          • 2021-10-12
          • 2019-12-03
          • 2018-12-11
          相关资源
          最近更新 更多