У меня два Observables
.
Observable<A> getAObservable()
Возвращает Observable ofA
Observable<B> getBObservable(A)
Возвращает Observable из 'B'.
Здесь Observable<A>
должен выполняться перед Observable<B>
, чтобы он мог передать свой результат A
в метод getBObservable()
. Теперь, когда Observable<B>
завершится, мне нужно объединить результаты этих observable
и Observable<AB>
должны возвращаться.
Пробовал варианты:
Возьмите
Observable<A>
и примените к нему flatMap, чтобы он преобразовал результат вB
. На данный момент у меня нет доступа к даннымA
. Следовательно, я не могу вернуть Observable- I can use
zip
so that once I get the result of bothObservable<A>
andObservable<B>
, I can combine their result toAB
. But here I cannot set dependency thatObservable<A>
should execute beforeObservable<B>
and I can't pass the result ofObservable<A>
toObservable<B>
- I can use
Кодовая база:
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) {
}
}
}