我需要它的原因是以flatMap样式组合多个(添加,放置)事务。现在我想知道我是否可以从前一个完整回调中初始化一个新事务。它似乎有效,但我永远无法确定它在生产中的作用。例如,如果你从请求onsuccess回调中做类似的事情,它具有事务延续的特殊含义。
问题也可能是,transaction#oncomplete
方法调用是一个信号表明事务已完成,还是transaction#oncomplete
返回时的信号?
我必须做一些负载测试才能弄明白自己,在简单的测试用例中,它工作,看起来事务结束是transaction#oncomplete
方法调用,但如果我开始大量使用它,似乎作为一些写锁定的星球,让我想到这一点。
答案 0 :(得分:4)
是。启动第二个交易以响应先前交易的"complete"
事件是正确的,也是推断排序的最简单方法。
按规格(" steps for committing a transaction"):
[...]只有在成功写完交易后才能完成"完成"事件被解雇。
如您所知,您可能会看到来自各个请求的"success"
个事件,但整个事务可能会中止(索引一致性,配额等),因此等待"complete"
是正确的事情,如果你需要推断第一笔交易在后续交易中的成功。