我有一个初始化为网络调用的类变量.
类似getter的方法负责在初始化时返回值,或者如果网络调用尚未返回则等待初始化值.
如何使用RxJava实现这一点?
另一个解决方案是,我可以简单地创建一个新的网络调用,而不是等待,而不是初始化值,如下所示:
private String value;
public Observable<String> getValue() {
if (value != null) {
return Observable.just(value);
}
return getValueRemotely();
}
private Observable<String> getValueRemotely() {
...
}
Run Code Online (Sandbox Code Playgroud)
但我想避免多次网络通话.
任何的想法 ?
这实际上是一个很好的用例AsyncSubject.
private AsyncSubject<String> value = AsyncSubject.create();
public Observable<String> getValue() {
value.asObservable();
}
Run Code Online (Sandbox Code Playgroud)
而在getValueRemotely()你要保证在通话onNext()和onComplete()上value.
value.onNext(valueString);
value.onCommpleted();
Run Code Online (Sandbox Code Playgroud)
AsyncSubject只有完成后,一个observable才会发出一个项目.
| 归档时间: |
|
| 查看次数: |
1951 次 |
| 最近记录: |