我有4个函数返回Observable of String
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
,需要创建这4个属性。
MyObject m = new MyObject(id,name,place,code);
我还有一个方法,它将MyObject
作为输入并返回其他一些Observalbe,如下所示
Observable<String> finalResult(MyObject myObject) {
return Observable.just("Final result");
}
致电finalResult
我必须通过调用前4种方法创建MyObject
,然后将MyObject
传递给finalResult
由于所有前4个方法都是异步的,我使用zip来获取所有4个值
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);
}
});
对于这类场景,zip
是否有其他方法可以减少代码长度?
我看到了blockingGet
,但我觉得这不是一个好用的。有没有简单的方法呢?