我仍在学习react / rxjava的一些细节,并对我经常遇到的用例有一个快速的问题。
我们经常有从数据库或其他数据源获取条目的服务,然后通过HTTP控制器将其返回给其他服务或客户端。我的问题是沿着这些思路的:将这些数据显示为Flowable<DTO>
与Maybe<List<DTO>>
(或适当时为Single<List<DTO>>
)之间有什么实际区别。所有数据将立即从数据源加载,因此将在本地列表中。
我假设在一个用例中,数据库调用返回了大量值,通过Flowable公开它们可能是一个更好的选择,以便调用者可以按自己的步调处理它们?但是,如果只是少量的记录,我认为它可以忽略不计。或者,类似地,是否存在返回Maybe<List<DTO>>
更可取的情况?
我误解了吗?
谢谢!
正如您所说,这实际上取决于您的用例,要处理的DTO
数以及它们的包装方式。
[如果在最一般的情况下有Flowable<DTO>
,则可以通过仅接受您现在可以处理的内容来施加背压。另外,您可以构造观察者链,将结果转换为列表:
Flowable<DTO> source;
// capture all the data:
source.
toList().
subscribe( /* Handle a List<DTO> */);
// Some data in a bunch
source.
buffer(20).
subscribe( /* Handle a List<DTO>, 20 entries at a time */ );
重点是,RxJava允许您将观察者链组合成最方便处理的结果类型。 RxJava模型使您可以轻松跨越时间和空间边界。