我有两个Observables
。
Observable<A> getAObservable()
返回类型为A
的 Observable。Observable<B> getBObservable(A)
返回类型为 'B' 的 Observable。
在这里,Observable<A>
应该在 Observable<B>
之前执行,以便可以将其结果 A
传递给 getBObservable()
方法。现在,一旦 Observable<B>
完成,我需要合并这些 observable
的结果,并返回一个 Observable<AB>
。
尝试的选项:
获取
Observable<A>
并在其上应用 flatMap,以使其转换为B
的结果。但此时我无法访问A
数据,因此不能返回 Observable。我可以使用
zip
,以便一旦获得了Observable<A>
和Observable<B>
的结果,就可以将它们的结果组合成AB
。但是,我无法设置Observable<A>
应该在Observable<B>
之前执行的依赖关系,也无法将Observable<A>
的结果传递给Observable<B>
。
代码库:
public class Data {
A a = new A();
public Observable<AB> getABContext() {
A a = new A();
return getAObservable()
.flatMap(new Func1<A, Observable<AB>>() {
@Override
public Observable<AB> call(final A a) {
return getBObservable(a)
.flatMap(new Func1<B, Observable<AB>>() {
@Override
public Observable<AB> call(B b) {
return Observable.just(new AB(a, b));
}
});
}
});
}
private Observable<A> getAObservable() {
return Observable.just(a);
}
private Observable<B> getBObservable(A a) {
return Observable.just(new B(a));
}
private static class A {
}
private static class B {
B (A a) {
}
}
private static class AB {
AB (A a, B b) {
}
}
}