java - RxJava withLatestFrom 不工作

标签 java rx-java

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

测试
测试
测试

但实际上什么都没发生。

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

    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));

最佳答案

首先,withLatestFrom 丢弃值,直到另一个可观察对象产生它的第一个值。如果主源是同步的并且在另一个源发出之前冲过,这种情况经常发生。

其次,PublishSubject 向订阅者发送消息,但在您的示例中,在 subject.onNext() 行,没有人观察该值,因为这样就掉线了。

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

关于java - RxJava withLatestFrom 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33893155/

相关文章:

system.reactive - 合并多个流,保持顺序并避免重复

android - fragment 的 refcount() 或 autoConnect()

java - 有没有办法检查 Java 中的流是否有限?

java - 这个值 "20150716203621.000Z"的时间格式的技术术语是什么?

java - JPA多对多持久连接表

android - 由于某些原因,Observable concatMap 在主线程上做事

java - RxJava 2 : BehaviorSubject and Observable. 合并最新问题

java - 如何停止和恢复 Observable.interval 发出滴答声

java - Collection.contains 产生错误的结果

java - 从 Arraylist 中分割字符串 (java)