使用RxJava我有一个Observable<A>和一个Observable<B>.我想在发出B第一个(也是唯一的)元素时立即开始订阅A.我知道我可以像这样链接它:
final Observable<A> obsOfA;
final Observable<B> obsOfB;
obsOfA.subscribe(new Action1<A>() {
@Override
public void call(A a) {
obsOfB.subscribe(...)
}
});
Run Code Online (Sandbox Code Playgroud)
..但这会导致嵌套语法,一旦我们介绍就会变得丑陋Observable<C>.如何将语法"解包"到更流畅的语言 - 获得更像javascript Promise.then()-flow 的语法?
你应该使用flatMap:
obsOfA.flatMap(new Func1<A, Observable<B>>() {
@Override
public Observable<B> call(A a) {
return obsOfB;
}
})
.subscribe(/* obsOfB has completed */);
Run Code Online (Sandbox Code Playgroud)
每次obsOfA调用时onNext(a),call都会以此值执行a.
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |