我正在尝试获取给定的最新值 Observable
并在调用后立即发出。以下面的代码为例:
return Observable.just(myObservable.last())
.flatMap(myObservable1 -> {
return myObservable1;
})
.map(o -> o.x) // Here I want to end up with a T object instead of Observable<T> object
这是行不通的,因为这样做 flatMap
将发射 myObservable1
反过来又必须发射才能到达 map
我不知道是否有可能做这样的事情。有没有人知道如何实现这个目标?谢谢
原文由 E-Kami 发布,翻译遵循 CC BY-SA 4.0 许可协议
last()
方法在这里没有任何帮助,因为它等待 Observable 终止给你最后一个发出的项目。假设您无法控制发射的可观察对象,您可以简单地创建一个
BehaviorSubject
并将其订阅到发出您想要收听的数据的可观察对象,然后订阅创建的主题。由于Subject
既是Observable
又是Subscriber
你会得到你想要的。我认为(现在没有时间检查)您可能必须手动取消订阅原始可观察对象,因为
BehaviorSubject
一旦他的所有订阅者取消订阅将不会自动取消订阅。是这样的:
http://reactivex.io/RxJava/javadoc/rx/subjects/BehaviorSubject.html