RxJava withLatestFrom 不工作

RxJava withLatestFrom not working

我希望在 运行 我的示例代码后得到如下结果。

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

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

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

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