Rx java 什么是正确的RxJava操作符来执行此操作?
对于以下场景,什么是正确的RxJava操作符: 我想检查是否存储了令牌,如果没有,则从网络获取令牌并使用它执行另一个网络请求Rx java 什么是正确的RxJava操作符来执行此操作?,rx-java,rx-android,Rx Java,Rx Android,对于以下场景,什么是正确的RxJava操作符: 我想检查是否存储了令牌,如果没有,则从网络获取令牌并使用它执行另一个网络请求 我认为应该用和/then/when或者结合过滤器和平面地图来完成,但不确定如何完成。解决这个问题的方法有很多。另一个通用解决方案是可观察的.concat // Our sources (left as an exercise for the reader) Observable<Data> memory = ...; Observable<Data&
我认为应该用
和/then/when
或者结合过滤器和平面地图来完成,但不确定如何完成。解决这个问题的方法有很多。另一个通用解决方案是可观察的.concat
// Our sources (left as an exercise for the reader)
Observable<Data> memory = ...;
Observable<Data> disk = ...;
Observable<Data> network = ...;
// Retrieve the first source with data
Observable<Data> source = Observable
.concat(memory, disk, network)
.first();
//我们的资料来源(留给读者作为练习)
可观察记忆=。。。;
可观测圆盘=。。。;
可观测网络=。。。;
//使用数据检索第一个源
可观测源=可观测
.concat(内存、磁盘、网络)
.first();
您的案例需要两个可观察对象。如果令牌存在于本地存储器concat
中,则不会订阅可观察的网络。更多信息在博客帖子中
来自的代码示例。我不知道这是否是您正在寻找的,但结构应该非常简单
Observable.just(getToken())
.filter(token->Strings.isNullOrEmpty(token))
.map(this::findNewToken)
.cache()
.subscribe(token -> println("Your new Token")
还要注意,cache
有助于缓存网络请求的可观测数据。