0

我有两个不同的 Observable,它们的行为如下

可观察的一种行为 -> 这将被创建,并且一个 DisposableObserver 将订阅它并对 Observable One 发出的项目做出反应。这将持续运行,直到应用程序关闭。

可观察的两个行为 -> 这将在不同的时间被创建并订阅到不同的观察者,并且在订阅之后,这应该根据订阅可观察的两个后观察者发出的值发出值。一旦工作完成 Observable 两个订阅将被处理,但 Observable 一个应该继续。

如何使第二个 Observable 基于 Observable 发出的值发出值并在完成后处理它?

4

2 回答 2

1

如果observableOne只能有一个订阅,您可以通过几种方式进行。最简单的方法是引入一个Subject; 它将被订阅observableOne,所有其他订阅者都将订阅该主题:

PublishSubject<DataType> observableOneStream = PublishSubject.create();

observableOne
  .subscribe( observableOneStream );
...
observableOneStream.subscribe( firstSubscription );
...
observableOneStream.subscribe( secondSubscription );
于 2019-01-17T14:03:55.780 回答
0

您可以flatMap将 Observable 1 的值转换为 Observable 2。

observableOne.flatMap(obsOneValue -> observableTwo(obsOneValue))
        .subscribe(obsTwoValue -> {

        });

然后你可以有一个方法Observable<ObsTwoValue> observableTwo(ObsOneValue obsOneValue),它会基于 Observable 一个发射创建 Observable 两个。

于 2019-01-17T12:23:10.073 回答