在另一个observable发出第一个项目之后开始发射

时间:2017-12-12 22:27:59

标签: rxjs rx-java observable rx-java2 reactivex

我有这个简单的用例,我似乎无法弄明白。

给出2个可观测量,A和B

A在B发出第一个项目后开始发出项目,B可以继续发出不再影响A的项目。

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

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

1 个答案:

答案 0 :(得分:3)

我认为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;
    });
}

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