Android 如何使用RxJava等待两个改装请求列表的结束
首先,让我描述一下我的情况:Android 如何使用RxJava等待两个改装请求列表的结束,android,rx-java,retrofit2,Android,Rx Java,Retrofit2,首先,让我描述一下我的情况: 我想通过API注册新记录 我想通过API更新一些行 当所有这些请求结束时,我需要得到通知,以开始另一项任务 具体来说,我有两个ArrayList: ArrayList<Report> createdReports = myHelper.getOfflineCreatedReports(); ArrayList<Report> editedReports = myHelper.getOfflineEditedReports(); 我正在使
- 我想通过API注册新记录
- 我想通过API更新一些行
- 当所有这些请求结束时,我需要得到通知,以开始另一项任务
ArrayList
:
ArrayList<Report> createdReports = myHelper.getOfflineCreatedReports();
ArrayList<Report> editedReports = myHelper.getOfflineEditedReports();
我正在使用flatMap
操作符为每个报告获取一个可观察值
但我不知道如何等到所有的请求都完成了
我正在考虑使用zip
操作符
Observable.zip(createdReportsObs, editedReportsObs, new Func2<NewReportResponse, NewReportResponse, Boolean>() {
@Override
public Boolean call(NewReportResponse justOneResponse, NewReportResponse justOneResponse2) {
return false;
}
});
Observable.zip(createdReportsObs、editedReportsObs、new Func2(){
@凌驾
公共布尔调用(NewReportResponse justOneResponse、NewReportResponse justOneResponse2){
返回false;
}
});
不幸的是,我看到了一些示例,其中使用zip
创建成对的可观察对象
请告诉我可以使用什么操作符来实现它。或者如何以不同的方法使用rxJava来实现
提前谢谢你。这是我的方式。可能不是最佳做法
Observable.merge(createdReportsObs, editedReportsObs)
.toList()
.flatMap(Observable::from)
.xxx //Now they are completed, do what you want
.subscribe();
您正在使用RXJava2吗?如果是这样,您可以使用新的completable api。这是假设您不需要知道任何服务器结果,只需要等待它们完成
Completeable.merge(createdReportsObs.toCompleteable(),
editedReportsObs.toCompleteable())
.subscribe()
谢谢在
merge
之后直接使用subscribe
有什么区别?您可以做的不仅仅是doOnCompleted
和doOnError
。此操作完成后,即使是doOnNext
,也会在完成后调用。
Completeable.merge(createdReportsObs.toCompleteable(),
editedReportsObs.toCompleteable())
.subscribe()