在firebase中交错/并发地发生了多次执行。当新执行发生并忘记旧的执行ID时,log id会发生变化。因此执行ID仅向前移动。当旧函数恢复时,它使用新的执行ID。有没有办法实现旧功能的旧执行ID&新功能的新执行ID。
工作流:
让我们说功能1& Function2是具有相同功能的不同触发器
1. Function1执行一些db读取和执行http请求。这将返回一个http承诺 - 这需要一些时间(可能是几毫秒)。让我们假设它从日志中执行的id是154690519665944
2.当function1正在等待时,Function2被触发。 function2获取execution-id 154690574405903
。 function2也做同样的事情并等待http响应
3. Function1恢复并获得http响应,并且在记录时它使用日志中的另一个execution-id 154694739233261
。
execution-id 154690519665944
发生了什么?
由于同时发生多个触发器,查找函数是否成功完成的唯一方法是检查日志。因此,通过使用execution-id作为过滤器,我可以找到函数是否成功执行。但是因为firebase会随机更改执行ID,我想我必须找到另一个解决方案。
PS:有一个更新调用会触发相同的功能。这是否会更改父函数execution-id?
答案 0 :(得分:0)
如果没有看到您的代码或完整的日志,我认为无法提供明确的答案。
然而,听起来你问的问题是如何在异步事务中保存内存中的数据。无论Firebase与否,您基本上都有两个选择:
您似乎依赖于execution-id,因此我建议采用后一种方法并将该id作为输入传递给您的httprequest并将服务器作为您的响应返回。