Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RxJava根据相互依赖的流的组合进行订阅_Java_Rx Java2_Flatmap_Flowable - Fatal编程技术网

RxJava根据相互依赖的流的组合进行订阅

RxJava根据相互依赖的流的组合进行订阅,java,rx-java2,flatmap,flowable,Java,Rx Java2,Flatmap,Flowable,嘿,我是RxJava新手,尝试实现以下目标: 我有以下方法: Flowable<List<Group>> getGroups(); Flowable<List<User>> getMembersForGroup(String groupid); 但是对于每个gid,我都会被困在这一点上,因为我不知道我实际上想要从flatMaps Func1返回什么,以及如何在flatMaps Func2中处理它 有人能帮忙吗 不幸的是,我仍然不知道,我对rxj

嘿,我是RxJava新手,尝试实现以下目标: 我有以下方法:

Flowable<List<Group>> getGroups();

Flowable<List<User>> getMembersForGroup(String groupid);
但是对于每个gid,我都会被困在这一点上,因为我不知道我实际上想要从flatMaps Func1返回什么,以及如何在flatMaps Func2中处理它

有人能帮忙吗

不幸的是,我仍然不知道,我对rxjava的想法没有那么多。以下是我到目前为止得到的信息:

model.getGroupData()
        .flatMap(new Func1<QueryDocumentSnapshot,Flowable<Maybe<List<UserSchema>>>>() {
                     @Override
                     public Flowable<Maybe<List<UserSchema>>> call(QueryDocumentSnapshot doc) {
                         Groups groups = doc.toObject(Groups.class);
                             List<Maybe<List<UserSchema>>> memberflow =  new ArrayList<>();
                             for (GroupSchema g: groups){
                                 memberflow.add(model.getMembersOfGroup(g.getId()));

                             }
                             return Flowable.fromIterable(memberflow); 
                     }
                },
                 new Func2<QueryDocumentSnapshot, Flowable<Maybe<List<UserSchema>>>,Flowable>() {
                     @Override
                     public Flowable call(QueryDocumentSnapshot queryDocumentSnapshot, Flowable<Maybe<List<UserSchema>>> flowable) {
                    //zip?
                }
            });
正如您所看到的,我实际上有一个QueryDocumentSnapshot,它并不重要,因为它可以很容易地转换为所提到的列表


因此,我仍然不确定我将从Func1返回什么,因此也不确定要压缩什么

这是您可以使用的一种方法还有其他方法,包括zip方法:


在第二个平面图中使用zip。使用用户列表压缩groupId。感谢您的回答!我更新了我的问题,你能看一下吗?
model.getGroupData()
        .flatMap(new Func1<QueryDocumentSnapshot,Flowable<Maybe<List<UserSchema>>>>() {
                     @Override
                     public Flowable<Maybe<List<UserSchema>>> call(QueryDocumentSnapshot doc) {
                         Groups groups = doc.toObject(Groups.class);
                             List<Maybe<List<UserSchema>>> memberflow =  new ArrayList<>();
                             for (GroupSchema g: groups){
                                 memberflow.add(model.getMembersOfGroup(g.getId()));

                             }
                             return Flowable.fromIterable(memberflow); 
                     }
                },
                 new Func2<QueryDocumentSnapshot, Flowable<Maybe<List<UserSchema>>>,Flowable>() {
                     @Override
                     public Flowable call(QueryDocumentSnapshot queryDocumentSnapshot, Flowable<Maybe<List<UserSchema>>> flowable) {
                    //zip?
                }
            });
groupApi
                .getGroups()
                .flatMap(Flowable::fromIterable)
                .map(Group::getId)
                .distinct()
                .flatMap(groupId -> groupApi.getMembersForGroup(groupId).map(users -> new Pair(groupId, users)))
                .subscribe(System.out::println);