我有一个与Google Firebase配对的快速iPhone应用程序。在应用程序中,用户将完成一个操作(按下按钮(。在这一点上,我想安排一个Google Firebase函数在用户操作后运行45分钟。然而,我希望当iPhone应用程序中的另一个操作(按下按钮(完成时,可以取消此功能。我可以在swift中使用计时器来完成这项工作,但如果用户关闭应用程序,这将不起作用。
我并不反对使用第三方调度器或类似的东西。欢迎任何建议。
我已经查看了可能重复的问题和答案(Firebase的Cloud Functions是否按时触发?(然而,该答案中的大多数链接都已过时。此外,这指的是重复安排一些事情。例如,每小时、每天一次等……我希望在触发(用户操作(后45分钟安排作业,并能够在45分钟窗口内取消作业。
延迟的云任务对您有用吗?
您可以创建一个延迟的云任务,并通过HTTP触发器调用您的函数。如果用户执行了您描述的第二个操作,则可以取消该任务。有许多用于云任务的专用客户端库,以及REST API。
没有内置的方法来延迟云函数上的触发器,或者在一定延迟后重新触发它。我能想到的使用云函数的最好方法是设置一个周期性触发器,如下所示:Firebase的云函数按时触发?。然后在这个周期性触发器中,您可以确定必须运行哪些作业。
您可以使用https://delayedrequest.com只要您可以通过http请求调用Firebase函数。
我最近遇到了一个类似的问题,通过使用Cloud Scheduler和Firestore解决了这个问题。我设置了一个作业,每5分钟触发一次云函数,检查Firestore集合。它会检索云功能应该何时触发的数据并触发它。这也取决于你希望时间触发器的准确性。让它无缘无故地一直触发并不是最好的,但在我的情况下,它是有效的。
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);
调用