Android RxJava:zip替代方案

Android RxJava:zip替代方案,android,rx-java2,Android,Rx Java2,我有一个4个函数,返回字符串的可观察值 Observable<String> id() { return Observable.just("1"); } Observable<String> name() { return Observable.just("X"); } Observab

我有一个4个函数,返回字符串的可观察值

            Observable<String> id() {
                return Observable.just("1");
            }

            Observable<String> name() {
                return Observable.just("X");
            }

            Observable<String> place() {
                return Observable.just("Place1");
            }

            Observable<String> code() {
                return Observable.just("A100s");
            }
我还有一个方法,它将
MyObject
作为输入,并返回一些其他观察值,如下所示

            Observable<String> finalResult(MyObject myObject) {
                    return Observable.just("Final result");
                }
对于这类场景,是否有
zip
的替代方案来减少代码长度


我看到了
blockingGet
,但我觉得这不是一个好方法。有什么简单的方法可以做到这一点吗?

我觉得这很好。如果您想减少代码长度,请查看使用lambda表达式。因此,如果您查看此处的所有组合运算符,建议最好使用
zip
。你的策略似乎很好。我想的是像前4个这样的方法,如果我们不把它们作为可观察的对象,它们只是返回
String
(比如getters),也就是说,如果我们像
String id(){return Observable.just(“1”);}
一样保留这些方法的话并在可观察链中需要时执行可观察包装,如
只是
。正常使用,否则。我说的不是Rx解决方案,而是设计方面的。你认为这是一个好方法吗?或者通常在Rx应用程序中,一切都应该是可观察的?我觉得这很好。如果您想减少代码长度,请查看使用lambda表达式。因此,如果您查看此处的所有组合运算符,建议最好使用
zip
。你的策略似乎很好。我想的是像前4个这样的方法,如果我们不把它们作为可观察的对象,它们只是返回
String
(比如getters),也就是说,如果我们像
String id(){return Observable.just(“1”);}
一样保留这些方法的话并在可观察链中需要时执行可观察包装,如
只是
。正常使用,否则。我说的不是Rx解决方案,而是设计方面的。你认为这是一个好方法吗?或者通常在Rx应用中,一切都应该是可观察的?
            Observable<String> finalResult(MyObject myObject) {
                    return Observable.just("Final result");
                }
             Observable.zip(id(), name(), place(), code(), new Function4<String, String, String, String, MyObject>() {
                        @Override
                        public MyObject apply(@NonNull String id, @NonNull String name, @NonNull String place, @NonNull String code) throws Exception {
                            MyObject m = new MyObject(id, name, place, code);
                            return m;
                        }
                    }).flatMap(new Function<MyObject, ObservableSource<String>>() {
                        @Override
                        public ObservableSource<String> apply(@NonNull MyObject myObject) throws Exception {
                            return result(myObject);
                        }
                    });