我有一个初始化为网络调用的类变量。
类似 getter 的方法负责在初始化时返回值,或者在网络调用尚未返回时等待初始化值。
如何用 RxJava 实现这个?
另一个解决方案是,我可以简单地创建一个新的网络调用,而不是等待,以防值仍未初始化,如下所示:
private String value;
public Observable<String> getValue() {
if (value != null) {
return Observable.just(value);
}
return getValueRemotely();
}
private Observable<String> getValueRemotely() {
...
}
但我想避免进行多次网络调用。
有什么想法吗?
最佳答案
这实际上是 AsyncSubject
的一个很好的用例。
private AsyncSubject<String> value = AsyncSubject.create();
public Observable<String> getValue() {
value.asObservable();
}
并且在 getValueRemotely()
中,您必须确保在 value上调用
.onNext()
和 onComplete()
value.onNext(valueString);
value.onCommpleted();
AsyncSubject
observable 只有在完成时才会发出一个项目。
关于android - RxJava : How to wait for a value to be initialized by a previous subscription?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833873/