所以我有一个场景,我想结合两个flowables的最新结果,并用它做点什么。
Flowable.combineLatest(
info,
list,
BiFunction { ... }
)
在某些情况下,我需要能够再次获得结果,并从之前做一些不同的事情。所以我可以在某处手动存储combinelatest的结果,然后只是重用它们但我在想,也许有办法添加第三个可流动的,并手动触发onNext,以便再次传播结果。这可能吗?
答案 0 :(得分:1)
有两种方法可以保持计算值以供以后使用。您可以创建一个充当中间变量的BehaviorSubject
,在定义时将具有计算值,或者您可以publish()
可观察,以便较新的订阅者获得最新结果。
BehaviorSubject intermediateResult = BehaviorSubject.create();
Flowable.combineLatest(info, list, ...)
.subscribe( intermediateResult );
可替换地,
Observable<Type> intermediateResult = Flowable.combineLatest(info, list, ...)
.replay(1)
.publish();
在任何一种情况下,订阅intermediateResult
都会获得最新的计算值(如果存在)。
编辑:使功能可以随时选择:
Observable<FunctionSelector> fnSelector;
Observable<Type> intermediateResult =
Flowable.combineLatest(info, list, fnSelector,
(information, listToUse, selector) ->
getFunction(selector).apply(information, listToUse))
.replay(1)
.publish(1);