运行我的示例代码后,我的结果如下。
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));
答案 0 :(得分:5)
首先,withLatestFrom
删除值,直到另一个observable产生其第一个值。如果主要源是同步的并且在另一个源发出之前冲过去,则会经常发生这种情况。
其次,PublishSubject
向订阅者发出但在您的示例中,在subject.onNext()
行,没有人在那里观察该值,因此被删除。
您可以使用BehaviorSubject
来代替记住最后一个值,而withLatestFrom
也会立即看到它。