Firebase 触发云函数并在函数完成时采取操作

Firebase 触发云函数并在函数完成时采取操作,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,我有一个应用程序,其中WebUI(react)云函数运行并更新数据库中的完成值 云功能完成后,如何显示“进度”指示并将其取下 我最初认为我会做一些类似于以下承诺的伪代码: return updateDatabaseToTriggerFunctionExec() .then listenForFunctionDoneEvent() .then return Promise.resolve(); 但是,我不知道如何知道函数何时完成并更新了值。当触发的云功能完成时,建议采用什么方法来

我有一个应用程序,其中WebUI(react)云函数运行并更新数据库中的完成值

云功能完成后,如何显示“进度”指示并将其取下

我最初认为我会做一些类似于以下承诺的伪代码:

return updateDatabaseToTriggerFunctionExec()
    .then listenForFunctionDoneEvent()
    .then return Promise.resolve();

但是,我不知道如何知道函数何时完成并更新了值。当触发的云功能完成时,建议采用什么方法来检测?

您必须实现类似命令响应模型的功能,使用数据库作为中继,将命令推送到某个位置,然后该功能将结果推送到发出该命令的客户机上。这项工作的关键是,命令和响应的位置在客户端和服务器之间是已知的,并且它们对为客户端命令生成的推送id有共同的认识

在使用Firebase构建基于回合的游戏的过程中,我对这种架构进行了一些探讨


另一种方法是使用HTTP函数,它有一个更明确定义的请求-响应周期。

firebase是否允许使用ref.on()或ref.once()来“侦听”尚不存在的节点或者需要一个现有节点,然后检查是否存在子节点?任何操作都不需要存在节点。我刚才为这些“等待值”情况编写了代码片段:。JavaScript版本:
var listener=ref.on('value',函数(snapshot){if(snapshot.exists()){console.log('value now'+snapshot.val());ref.off('value',listener);}这是一个好的开始。在一般情况下,firebase函数可能会出错,而不会按预期更新响应。在这种情况下,还需要超时来提供拒绝响应。最后,我用一个“超时承诺”来结束这一切,如果没有回应,它就会触发。