RxJava2。缓冲一个可观察项,直到其他可观察项完成

时间:2020-05-11 07:37:18

标签: java rx-java rx-java2

我有一个任务要合并两个可观察对象-一个是从数据库中存在的有限可观察对象(称为 databaseStream ),另一个是从队列中存在的无限可观察对象( queueStream )。客户端订阅时,我需要立即订阅 queueStream ,但是缓冲项目直到 databaseStream 都将完全完成。发生这种情况时,我要发出 queueStream 的所有缓冲项目。之后,必须立即发射 queueStream 中的所有项目。使用RxJava 2有什么方便的方法吗?

1 个答案:

答案 0 :(得分:0)

发现灵感here

Flowable<Foo> queueStream  = queueStream()
    .subscribeOn(Schedulers.newThread());

Flowable<Foo> databaseStream = databaseStream()
    .subscribeOn(Schedulers.newThread());

Flowable.concatEager(Arrays.asList(databaseStream, queueStream), 2 , 1000)
    .distinct(identityFunction())
    .blockingSubscribe(System.err::println);