我觉得这是一个愚蠢的问题,但我暂时找不到任何答案,所以我要问一下,抱歉:)
因此,我需要一个执行以下操作的函数:
1) 调用另一个函数来创建一个 Observable User
2) 从 Observable User 获取 User 对象
3) 获取有关用户的一些信息并运行一些逻辑
4) 返回可观察用户
我在执行第 2 步时遇到问题。我怎么做?或者,这种方法在某种程度上是错误的吗?
这是函数的“模型”:
@Override protected Observable buildUseCaseObservable(){
Observable<User> userObservable = userRepository.findUserByUsername(username);
//User user = ??????
//if (...) {...}
return userObservable;
}
谢谢你:)
最佳答案
您可以使用运算符(map、flatMap、doOnNext 等)通过管道获取由您的可观察对象包装的对象
Observable.just("hello world")
.map(sentence-> sentence.toUpperCase) --> do whatever you need.
.subscribe(sentence -> println(sentence)
通过设计 Observable 遵循 Observer 模式,订阅 Observable 并在通过管道发出后接收项目。
您还可以使用观察者模式,只需使用 toBlocking 从管道中提取对象。但那是一种反模式,意味着您没有应用好的设计。
@Test
public void observableEvolveAndReturnToStringValue() {
assertTrue(Observable.just(10)
.map(String::valueOf)
.toBlocking()
.single()
.equals("10"));
}
您可以在此处查看有关阻止的更多示例 https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/utils/ObservableToBlocking.java
关于java - RxJava : How to extract object from observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38744522/