合并依赖的可观察量

时间:2017-12-15 09:31:12

标签: kotlin rx-java2

我有两个发出相同类型数据的Observable。但是它们都依赖于另一个为扫描操作符发出的最后一个值作为初始值。我需要合并它们。我无法订阅另一个,因为我的Observable是由不同的值触发的。我认为主题应该参与,但我不确定如何。

val intents: Observable<Intent> = ...

intents
  .scan(MyViewState.default(), intentToStateReducer)

intents
  .map(intentToActionMapper)
  .compose(actionDispatcher)
  .scan(MyViewState.default(), resultToStateReducer)

两个Observable将保持自己的状态。合并不会让他们看到对方的最新价值。每个Observable的新状态将基于其自己的流的先前值。

1 个答案:

答案 0 :(得分:0)

    final String[] aStrings = {"A1", "A2", "A3", "A4"};
    final String[] bStrings = {"B1", "B2", "B3"};

    final Observable<String> aObservable = Observable.fromArray(aStrings);
    final Observable<String> bObservable = Observable.fromArray(bStrings);

    Observable.merge(aObservable, bObservable)
            .subscribe(getObserver());

使用merge运算符组合Observable:merge不维护Observable的顺序。它将发出所有7个值可能不按顺序排列。 前 - &#34; A1&#34;,&#34; B1&#34;,&#34; A2&#34;,&#34; A3&#34;,&#34; A4&#34;,&#34 ; B2&#34;,&#34; B3&#34; - 可能是任何东西