如何使用RxJava在一个可观察对象上订阅多个观察者?
我有一个如何使用RxJava在一个可观察对象上订阅多个观察者?,java,rx-java3,Java,Rx Java3,我有一个可观察的,我希望多个订阅者共享这个可观察的。 每个订阅者将筛选每个事件并对其进行处理 可观察的是通过以下方式创建的: @Override public List<Event> findNewEvents() { List<Event> results = new ArrayList<>(); while(! fetchedEvents.isEmpty()) { results.ad
可观察的
,我希望多个订阅者共享这个可观察的。
每个订阅者将筛选每个事件并对其进行处理
可观察的
是通过以下方式创建的:
@Override
public List<Event> findNewEvents() {
List<Event> results = new ArrayList<>();
while(! fetchedEvents.isEmpty()) {
results.add(fetchedEvents.poll());
}
return results;
}
@Override
public Observable<List<Event>> findNewObservableEvents() {
return Observable.just(findNewEvents());
}
@覆盖
公共列表findNewEvents(){
列表结果=新建ArrayList();
而(!fetchedEvents.isEmpty()){
add(fetchedEvents.poll());
}
返回结果;
}
@凌驾
公共可观测findNewObservableEvents(){
返回可观察的。just(findNewEvents());
}
代码如下:
Observable<List<Event>> newEvents = reader.findNewObservableEvents();
Disposable riskApproveRiskEventsDisposable = newEvents.flatMapIterable(riskEvents -> riskEvents)
.flatMap(Observable::just)
.filter(risk::isForRiskApproval)
.subscribe(risk::approveRisk);
Disposable fundingCheckFundabilityEventsDisposable = newEvents.flatMapIterable(riskEvents -> riskEvents)
.flatMap(Observable::just)
.filter(funding::isForFundingFundabilityCheck)
.subscribe(funding::checkFundability);
Disposable fundingFundEventsDisposable = newEvents.flatMapIterable(riskEvents -> riskEvents)
.flatMap(Observable::just)
.filter(funding::isForFundingFund)
.subscribe(funding::fund);
Observable newEvents=reader.findnewobservable事件();
一次性风险审批人iskeventsdisposable=newEvents.flatMapIterable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(风险::isForRiskApproval)
.订阅(风险::approveRisk);
一次性基金CheckFundabilityEventsDisposable=newEvents.FlatMapetable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFundabilityCheck)
.认购(资金:可检查资金);
一次性基金FundEventsDisposable=newEvents.FlatMapetable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFund)
.认购(资金::基金);
我试过:
newEvents.share()
以及newEvents.publish()
尝试时:newEvents.create()
我需要提供一个observeOnSubscribe
对象,但我不知道如何获取它
诀窍是什么?如果您不想多次使用
findNewObservableEvents
,请使用publish
,订阅者订阅后,在ConnectableObservable
上调用connect
:
ConnectableObservable newEvents=reader.findnewobbservableEvents().publish();
一次性风险批准人Iskevents一次性=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(风险::isForRiskApproval)
.订阅(风险::approveRisk);
一次性资金支票资金能力即使一次性=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFundabilityCheck)
.认购(资金:可检查资金);
可支配资金资金事件可支配=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFund)
.认购(资金::基金);
一次性连接=newEvents.connect();
如果您不想多次使用findNewObservableEvents
,请使用publish
,订阅者订阅后,在ConnectableObservable
上调用connect
:
ConnectableObservable newEvents=reader.findnewobbservableEvents().publish();
一次性风险批准人Iskevents一次性=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(风险::isForRiskApproval)
.订阅(风险::approveRisk);
一次性资金支票资金能力即使一次性=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFundabilityCheck)
.认购(资金:可检查资金);
可支配资金资金事件可支配=
newEvents.FlatMapiteable(riskEvents->riskEvents)
.flatMap(可观察::just)
.filter(funding::isForFundingFund)
.认购(资金::基金);
一次性连接=newEvents.connect();