loe*_*chg 3 android rx-java retrofit rx-android
假设我有两个基本上是网络调用的Observable(A和B)(使用Retrofit来提供上下文).
该应用程序的当前流程如下:
鉴于这2个observables/api调用,我有3个不同的场景我想听.
首先,这是RxJava的一个很好的用例吗?
我知道如何单独完成每个场景(使用zip最后一个),虽然我不知道如何同时完成所有这些场景.
如果我订阅Observable A,A开始.如果我订阅B,B开始.如果A&B在我订阅zip(a,b)之前完成,我可能会错过这个活动,从来没有真正看到这个完整,对吧?
任何一般指导将不胜感激.我的RxJava知识非常薄:P
您可以使用三种不同的可观察对象来实现这一点,每种情况都可以使用一个.
由于您必须在每个可观察对象之间共享状态,因此您必须将改进的冷可观察对象转换为热可观察对象.(有关此主题的更多信息,请参见此处)
ConnectableObservable a = service.callA().publish();
ConnectableObservable b = service.callB().publish();
a.subscribe((e) -> { /* onNext */ }, (ex) -> {/* onError */}, () -> {/* when A is completed */ });
b.subscribe((e) -> { /* onNext */ }, (ex) -> {/* onError */}, () -> {/* when B is completed */ });
a.mergeWith(b).subscribe((e) -> { /* onNext */ }, (ex) -> {/* onError */}, () -> {/* when A and B are completed */ });
a.connect(); // start subscription to a
b.connect(); // start subscription to b
Run Code Online (Sandbox Code Playgroud)
不要在onCompleted方法之间共享对象,否则你将不得不处理并发问题.
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |