运行我的示例代码后,我预期结果如下。
测试
测试
测试
但实际上什么都没发生。
请让我知道我的代码有什么问题。
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/