在另一个 Observable 发射它的第一个项目后开始发射

Start emitting after another observable emitted its first item

我有一个我似乎无法理解的简单用例。

给定 2 个观测值,A 和 B

A 在 B 发射第一个物品后开始发射物品,B 可以继续发射物品,这应该不会再影响 A。

我需要这个,因为 A 需要 B 发出的第一个值才能开始发出。

我试过 skipUntil 和 startWith 都无济于事。

我认为flatMap可以帮助你做你想做的事情:

Observable<Integer> createA(Observable<Integer> B) {
    return B.take(1).flatMap(b -> {
        /* replace with your Observable A implementation here */
        BehaviorSubject<Integer> subjectA = BehaviorSubject.create();
        return subjectA;
    });
}

此方法 returns 一个 Observable A,它仅在使用 Observable B 发出的第一个值初始化后才开始发射 B