Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 在云函数中使用setTimeout可以吗?_Firebase_Google Cloud Functions - Fatal编程技术网

Firebase 在云函数中使用setTimeout可以吗?

Firebase 在云函数中使用setTimeout可以吗?,firebase,google-cloud-functions,Firebase,Google Cloud Functions,我想知道在Firebase云函数中使用setTimeout是否可以?我的意思是,它在本地对我来说有点工作,但它有一个非常奇怪的行为:不可预知的超时函数的执行 示例:我将超时时间设置为5分钟。所以5分钟后执行我的回调。大多数情况下它都能正确执行,但有时回调执行的时间比5分钟晚很多 但它只在我本地的电脑上运行。当我将我的函数部署到firebase时,这种行为也会发生吗?云函数有最长的运行时间,如中所述。如果超时在该时间限制过期后进行回调,则函数可能已经终止。本地仿真器和托管环境之间发生过期的方式可能

我想知道在Firebase云函数中使用setTimeout是否可以?我的意思是,它在本地对我来说有点工作,但它有一个非常奇怪的行为:不可预知的超时函数的执行

示例:我将超时时间设置为5分钟。所以5分钟后执行我的回调。大多数情况下它都能正确执行,但有时回调执行的时间比5分钟晚很多


但它只在我本地的电脑上运行。当我将我的函数部署到firebase时,这种行为也会发生吗?

云函数有最长的运行时间,如中所述。如果超时在该时间限制过期后进行回调,则函数可能已经终止。本地仿真器和托管环境之间发生过期的方式可能不同


一般来说,我建议不要设置超过几秒钟的超时时间。在云计算功能中,只要您的功能处于活动状态,您就会收到账单。如果设置超时时间为几分钟,则会为所有这些时间计费,即使您的代码所做的一切都是在等待时钟过期。查看您正在等待的服务是否能够调用webhook,或者检查它是否已完成,云功能是否有最长运行时间,这可能更具成本效益,如中所述。如果超时在该时间限制过期后进行回调,则函数可能已经终止。本地仿真器和托管环境之间发生过期的方式可能不同


一般来说,我建议不要设置超过几秒钟的超时时间。在云计算功能中,只要您的功能处于活动状态,您就会收到账单。如果设置超时时间为几分钟,则会为所有这些时间计费,即使您的代码所做的一切都是在等待时钟过期。查看您正在等待的服务是否能够调用webhook,或者检查它是否已完成,这可能更具成本效益

我不清楚问题出在哪里。您是否在询问setTimeout是否适用于云函数?或者你想知道在云函数中使用setTimeout是不是一个好主意?这通常不是个好主意。或者你想知道为什么你没有在这里展示的代码不起作用吗?我不清楚问题出在哪里。您是否在询问setTimeout是否适用于云函数?或者你想知道在云函数中使用setTimeout是不是一个好主意?这通常不是个好主意。或者你想知道为什么你没有在这里展示的代码不起作用吗?谢谢你,弗兰克,很不幸,这对我来说是个问题。我想要实现的是,某些特定的代码在预设时间之后完全执行。就我而言,我有两名球员之间的比赛。当玩家A准备就绪=真时,我想通过setTimeout运行5分钟的倒计时。如果球员B在此时间段内未准备好,球员A将获得默认胜利。你知道我怎样才能解决那个问题吗?恐怕cronjobs不会,因为时间太不准确了。如此准确的时间需要一个持续的过程。我可能会使用一个应用程序引擎实例来实现这一点。或者使用客户端自己进行倒计时,然后从那里触发一个云函数来确定赢家。我担心客户端无法处理这个问题,因为他们可能会离线。您是否有一个链接,我可以在其中找到有关该应用程序引擎实例主题的更多信息?顺便说一句,如果有帮助的话,我正在开发一个web应用程序。如果两个客户端都脱机,超时的准确性真的那么重要吗。也就是说,cron触发的功能可能可以很好地处理这种情况,每隔一分钟左右扫描一次过期和废弃的游戏。这仍然会导致函数使用率低于每个游戏保持实例5分钟的活动时间。你的评论让我想到了在客户端解决这个问题的想法,就像你建议的那样。我会让客户机来做这项工作,万一他们离线又重新上线,我会在后台运行一个云函数调用。只有在后台函数调用解决之前,玩家才能进入比赛场地。这将确保视图显示正确的信息。谢谢Frank,很遗憾,这对我来说是个问题。我想要实现的是,某些特定的代码在预设时间之后完全执行。就我而言,我有两名球员之间的比赛。当玩家A准备就绪=真时,我想通过setTimeout运行5分钟的倒计时。如果球员B在此时间段内未准备好,球员A将获得默认胜利。你知道我怎样才能解决那个问题吗?恐怕cronjobs不会,因为时间太不准确了。如此准确的时间需要一个持续的过程。我可能会使用一个应用程序引擎实例来实现这一点。或者使用客户机自己来完成
倒计时,然后从那里触发一个云函数来确定胜利者。恐怕客户端无法处理这个问题,因为他们可能会离线。您是否有一个链接,我可以在其中找到有关该应用程序引擎实例主题的更多信息?顺便说一句,如果有帮助的话,我正在开发一个web应用程序。如果两个客户端都脱机,超时的准确性真的那么重要吗。也就是说,cron触发的功能可能可以很好地处理这种情况,每隔一分钟左右扫描一次过期和废弃的游戏。这仍然会导致函数使用率低于每个游戏保持实例5分钟的活动时间。你的评论让我想到了在客户端解决这个问题的想法,就像你建议的那样。我会让客户机来做这项工作,万一他们离线又重新上线,我会在后台运行一个云函数调用。只有在后台函数调用解决之前,玩家才能进入比赛场地。这将确保视图显示正确的信息。