在Firebase处理并行读取操作

时间:2018-01-05 14:03:44

标签: android firebase firebase-realtime-database

我想知道处理多个并行“读取操作”的最佳方法是什么,即在Firebase(基于Java / Android)中注册SingleValueEventListener并处理onDataChanged事件中的数据。假设我有三个不同的DatabaseReference位置,并且立即注册了三个监听器,

  1. 是否有可能以某种方式将整个事物捆绑在一起,以便只有一个请求?
  2. 实现'等待'的最佳方法是什么,以便在三个DataChange事件中的最后一个传递数据时立即执行代码,而不嵌套数据,以便只有在前一个?

1 个答案:

答案 0 :(得分:1)

  1. 无法(也不需要)将读取组合到单个请求中。 Firebase数据库客户端通过单个连接管道化请求。请参阅my answer here了解其工作原理以及为何解决大多数开发人员对往返性能的担忧。

  2. Promise.all()处理的JavaScript代码。在Android中,您可以使用Task来完成相同的操作。 Doug Stevenson写了一篇很棒的博客文章,我建议阅读详细信息:part 1part 2part 3(其中包含使用Continuation的链接任务), part 4最终使用Tasks.whenAll(...)并行涵盖并行运行的任务)。