手动触发一个 RxJava combinelatest flowable
Manually trigger a RxJava combinelatest flowable
所以我有一个场景,我想结合两个可流动对象的最新结果并用它做一些事情。
Flowable.combineLatest(
info,
list,
BiFunction { ... }
)
在某些情况下,我需要能够再次得到结果,并做一些与以前不同的事情。所以我可以手动将 combinelatest 的结果存储在某个地方,然后重用它们,但我在想,也许有一种方法可以添加第三个 flowable,并手动触发 onNext,以便再次传播结果。这可能吗?
有两种方法可以保留计算值供以后使用。您可以创建一个 BehaviorSubject
作为中间变量,在定义时将具有计算值,或者您可以 publish()
observable 以便新订阅者获得最新结果。
BehaviorSubject 中间结果 = 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);
所以我有一个场景,我想结合两个可流动对象的最新结果并用它做一些事情。
Flowable.combineLatest(
info,
list,
BiFunction { ... }
)
在某些情况下,我需要能够再次得到结果,并做一些与以前不同的事情。所以我可以手动将 combinelatest 的结果存储在某个地方,然后重用它们,但我在想,也许有一种方法可以添加第三个 flowable,并手动触发 onNext,以便再次传播结果。这可能吗?
有两种方法可以保留计算值供以后使用。您可以创建一个 BehaviorSubject
作为中间变量,在定义时将具有计算值,或者您可以 publish()
observable 以便新订阅者获得最新结果。
BehaviorSubject 中间结果 = 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);