想知道继续以下 Rx 链的最佳方法是什么,我需要决定调用 flatmap 还是 switchmap?

Wondering what is the best way to continue the following Rx chain ,where I need to decide to call either flatmap or switchmap?

我有一个基于数据的 Flowable 对象 Flowable<Data> 属性 我需要使用 flatmapswitchmap 运算符继续链,我将在哪里调用returns 可流动的方法。

Data(a:boolean, str:String)

return Flowable.defer(
                () -> {
                    final int[] indices = new int[3];
                    //AtomicBoolean state = new AtomicBoolean(false);
                    return Flowable.combineLatest(a,b,c,()->{
                        return Flowable<Data>; })  

在这里,在 combineLatest 之后,在我有 Flowable 的地方,我想根据 属性 来决定调用 flatmap() 还是 switchmap()。想知道我该如何继续。

我想到的一件事是,拥有 AtomicBoolean,然后 我可以对 compose() 执行以下传递,但我不确定这是否是正确的方法?

.compose(new SwitchMapWithFlatMap(state.get()))

您可以只使用 combineLatest 参考并有条件地应用您选择的运算符:

return Flowable.defer(() -> {
    final int[] indices = new int[3];
    //AtomicBoolean state = new AtomicBoolean(false);
    Flowable<Data> f = Flowable.combineLatest(a, b, c, (x, y, z) -> {
                            return Flowable<Data>; 
                       });
    if (state.get()) {
        return f.flatMap(w -> ... );
    }
    return f.switchMap(w -> ...);
});