问题描述
我想的有点像JS Promise.all([...])。then(),但适用于云函数。
例如功能A取决于功能B和C的成功完成,而功能B和C彼此不知道并且可以同时运行。
我认为这样的东西本机不可用?
我唯一能想到的就是保留某种持久性寄存器和一个中间函数,该中间函数会在B和C都完成时触发,并检查组是否已完成并在它们完成时触发A。
解决方法
仅凭Cloud Functions是不可能的。该系统是无状态的-每次函数调用都没有“记忆”。
您需要做的是使另一个产品保持状态,该状态将负责在前两个功能完成后触发第三个功能。一种实现方法是使用Firestore文档存储每个功能的完成状态。功能B和C必须在一些共享唯一ID上达成共识,以标识其工作。该ID可以用作存储每个功能的完成状态的集合中文档的ID,这些功能必须在完成之前将其状态写入该文档。然后,您可以编写一个Firestore触发器,当该集合中的文档发生更改时将调用该触发器。然后,该功能将检查文档以查看B和C是否完整,并运行A。