我在后台有一个长时间运行的处理文件,并使用BehaviorSubject
将其发布到subject.onNext(progress)
,并在完成后调用subject.onCompleted
。
在流程的某个时刻,我想订阅subject
并获取当前进度或等到它完成。
prepareOtherStuff()
.flatMap(validate())
.????? <- want to subscribe here
.map(finalize())
.subscribe()
我遇到了?????
部分的问题。无法弄清楚如何阻止流并等待文件处理完成并获得文件处理进度以将其显示给用户。
例如:
-- other files already processed, don't care about them --
File 8 of 10 processed
File 9 of 10 processed
-- onCompleted received --
我如何实现这种行为?
答案 0 :(得分:1)
您可以使用.concatWith
(其中TheType
是从.flatMap(validate())
返回的Observable的泛型类型):
prepareOtherStuff()
.flatMap(validate())
.concatWith(subject
.doOnNext(m -> log.info(m))
.ignoreElements()
.cast(TheType.class))
.map(finalize())
.subscribe()