我正在努力寻找问题的答案,我正在阅读文档,但找不到与此相关的任何参考资料。
我有一台服务器将更新发送到我的 Firebase 实时数据库。例如,我发送 3 个单独的写入请求,更新 3 个不同的路径
set(ref(db, 'location/A'))
set(ref(db, 'location/B'))
set(ref(db, 'location/C'))
如果我然后在前端应用程序中以相同的顺序设置侦听器,是否始终保证我会按照在服务器中创建的顺序(例如 A、B、C)接收响应,或者总是有机会竞争条件?
Firebase SDK 按照接收到的顺序将写入操作发送到服务器,实时数据库按照接收到的顺序执行操作。由于更改发生时也会广播给任何侦听器,因此无法颠倒它们的顺序。
也就是说,不能保证每个客户端都能看到每个写操作。
具体来说:如果一个或多个客户端重复写入同一路径,则某些侦听器可能(并且相对常见)看不到某些状态更改,而只能获得路径的“最终”状态。
因此,在您指定的示例中,侦听顶级
location
节点的客户端可能只会看到所有三个写入的一个更新 - 具有最终状态的更新。当后面的写入操作正在修改/覆盖早期操作的数据时,这一点变得尤其重要。