RxJava:如何从observable中提取对象?

我觉得这是一个愚蠢的问题,但我暂时找不到任何答案,所以我会问它,对不起:)

所以,我需要一个执行以下功能函数

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;
}

谢谢 :)

解决方法

你无法从一个可观察者中“提取”某些东西.当您订阅它们时,您可以从observable获取项目(如果它们发出任何项目).由于您要返回的对象是Observable类型,因此您可以应用运算符将​​数据转换为链接. RxJava中最常见且易于使用的运算符是“map”,它通过应用函数将一种形式的数据更改为其他形式.

在您的情况下,您可以直接在Observable< user>上使用’map’运算符:

return userRepository.findUserByUsername(username)    
       .map(new Func1<User,Object>() {
                @Override
                public Object call(User u) {
                    // ..
                    // apply your logic here
                    // ..
                    return myDataObject; // return you data here to subcribers
                }
            });

我希望你了解RxJava的基础知识,不需要任何关于如何使用运算符的介绍.对于地图文档,请遵循此link

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...