RxJava:等待另一个可观察到的结果

RxJava:等待另一个可观察到的结果,java,system.reactive,rx-java,reactive-programming,Java,System.reactive,Rx Java,Reactive Programming,如何在转换当前结果时等待另一个可观察结果 我有一个用户ID列表(userIdsList),我应该将它们转换为地图。在映射中,键由userId表示,值为布尔值,表示userId是否包含Inreguser return Observable .<List<Long>>from(userIdsList) .groupBy(id -> id, id -> regUsers.contains(id)); //PROBLEM: regUsers is Obse

如何在转换当前结果时等待另一个可观察结果

我有一个用户ID列表(
userIdsList
),我应该将它们转换为地图。在映射中,键由userId表示,值为布尔值,表示userId是否包含In
reguser

return Observable
   .<List<Long>>from(userIdsList)
   .groupBy(id -> id, id -> regUsers.contains(id)); //PROBLEM: regUsers is Observable<List<Long>>
可观察返回
.from(userIdsList)
.groupBy(id->id,id->reguser.contains(id))//问题:调节器是可见的

有些复杂的解决方案

      List<Long> ids = Arrays.asList(1L, 2L, 3L);
      Observable<List<Long>> regUsers = Observable.just(Arrays.asList(1L, 2L)).cache();

      Observable<Long> idsStream = Observable.from(ids).cache();
      Observable<Boolean> containsStream = idsStream
             .concatMap(id -> regUsers.map(regList -> regList.contains(id)));

      idsStream.zipWith(containsStream, (Func2<Long, Boolean, Pair>) Pair::new)
            .toMap(Pair::getLeft, Pair::getRight).subscribe(System.out::println);


  private static class Pair<K, V> {

    private final K left;
    private final V right;

    public Pair(K left, V right) {
        this.left = left;
        this.right = right;
    }

    public K getLeft() {
        return left;
    }

    public V getRight() {
        return right;
    }
}
List id=Arrays.asList(1L、2L、3L);
可观察的调节器=可观察的.just(Arrays.asList(1L,2L)).cache();
Observable idsStream=obbservable.from(ids.cache();
可观察的containsStream=idsStream
.concatMap(id->regUsers.map(regList->regList.contains(id));
idsStream.zipWith(containsStream,(Func2)Pair::new)
.toMap(Pair::getLeft,Pair::getRight).subscribe(System.out::println);
私有静态类对{
私人最后K左;
私人最终V权;
公共对(K左,V右){
this.left=左;
这个。右=右;
}
公共K getLeft(){
左转;
}
公共V getRight(){
返还权;
}
}

ah,注册用户是可见的。。根据代码中关于可观测调节器的注释,一分钟更新了答案