RxJava withLatestFrom不工作

时间:2015-11-24 11:59:59

标签: java rx-java

运行我的示例代码后,我的结果如下。

   ATEST
   BTEST
   CTEST

但实际上什么也没发生。

请让我知道我的代码有什么问题。

    Subject<String, String> subject = PublishSubject.create();
    subject.onNext("test");

    Observable<String> observable = Observable.from(new String[] {"a", "b", "c"}).repeat(2);
    observable.withLatestFrom(subject, (s1, s2) -> s1 + s2)
            .subscribe(s -> System.out.println(s));

1 个答案:

答案 0 :(得分:5)

首先,withLatestFrom删除值,直到另一个observable产生其第一个值。如果主要源是同步的并且在另一个源发出之前冲过去,则会经常发生这种情况。

其次,PublishSubject向订阅者发出但在您的示例中,在subject.onNext()行,没有人在那里观察该值,因此被删除。

您可以使用BehaviorSubject来代替记住最后一个值,而withLatestFrom也会立即看到它。