Android RxJava:zip替代方案
我有一个4个函数,返回字符串的可观察值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
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);
}
});