Rx java 映射可观察<;某物>;可观察<;无效>;

Rx java 映射可观察<;某物>;可观察<;无效>;,rx-java,Rx Java,我想执行task 1,然后执行task 2,而不需要组合它们发出的项目。我有这个: interface Service { Observable<Something> doTask1(); Observable<SomethingElse> doTask2(); } 如果是,是否有任何“正确”的方法将可观察的映射到可观察的?我是这样做的: public class TaskService implements Service { public O

我想执行
task 1
,然后执行
task 2
,而不需要组合它们发出的项目。我有这个:

interface Service {
    Observable<Something> doTask1();
    Observable<SomethingElse> doTask2();
}
如果是,是否有任何“正确”的方法将
可观察的
映射到
可观察的
?我是这样做的:

public class TaskService implements Service {
    public Observable<Void> doTask1() {
        return getSomething().map(new Func1<Something, Void>() {
                    @Override
                    public Void call(Something something) {
                        return null;
                    }
                });
    } 
}
public类TaskService实现服务{
公共可观测doTask1(){
返回getSomething(){
@凌驾
公共无效呼叫(某物){
返回null;
}
});
} 
}

任何建议都将不胜感激。

将值映射到Void是一种有效的方法,但RxJava引入了
Completable
,这是
Observable
的一个变体,它不发出项目,只发出完成和错误通知。 您可以在这里使用它,因为您不关心发出的值,那么您将得到更干净的API,也不需要将这些值映射为更少的值

public Completable doTasks() {    
    Completable.merge(service.doTask1().toCompletable(), service.doTask2().toCompletable());
}

你在对合并后的可见光发射做些什么吗?你对合并后的可观测数据做了什么?不,我不是。我只是想完成这项任务。发出的项目并不重要。
public Completable doTasks() {    
    Completable.merge(service.doTask1().toCompletable(), service.doTask2().toCompletable());
}