먼저 요청, 내 상황을 설명하자 : 내가 API를 통해 새 레코드를 등록 할이
- .
- API를 통해 일부 행을 업데이트하려고합니다.
- 이러한 모든 요청이 종료되면 알림을 받아야 다른 작업을 시작할 수 있습니다.
은 특히 나는이 두 ArrayList
: 각 보고서 내 ApiService에서 Observable
인스턴스를 얻는 방법을 사용할 수 있습니다
ArrayList<Report> createdReports = myHelper.getOfflineCreatedReports();
ArrayList<Report> editedReports = myHelper.getOfflineEditedReports();
(내 개조 구현과 관련된).
Observable<NewReportResponse> createdReportsObs = Observable.from(createdReports) // .just() != .from()
.flatMap(new Func1<Report, Observable<NewReportResponse>>() {
@Override
public Observable<NewReportResponse> call(Report report) {
return report.postToServer();
}
});
Observable<NewReportResponse> editedReportsObs = Observable.from(editedReports)
.flatMap(new Func1<Report, Observable<NewReportResponse>>() {
@Override
public Observable<NewReportResponse> call(Report report) {
return report.updateInServer();
}
});
나는 각 보고서에 대한 관찰 가능한 하나를 얻기 위해 flatMap
연산자를 사용하고 있습니다.
하지만 모든 요청이 완료 될 때까지 기다리는 방법을 모르겠습니다.
나는 zip
연산자를 사용하려고 생각하고있었습니다.
Observable.zip(createdReportsObs, editedReportsObs, new Func2<NewReportResponse, NewReportResponse, Boolean>() {
@Override
public Boolean call(NewReportResponse justOneResponse, NewReportResponse justOneResponse2) {
return false;
}
});
불행하게도 나는 Observables은 쌍을 만드는 데 사용됩니다
zip
몇 가지 예를 보았다.
달성 할 수있는 연산자는 무엇입니까? 또는 rxJava를 다른 접근 방식으로 사용하는 방법.
미리 감사드립니다.
감사합니다. '''merge'' 바로 뒤에'''subscribe''를 사용하면 어떻게됩니까? – JCarlos
'doOnCompleted'와'doOnError'보다 더 많은 일을 할 수 있습니다. 이 작업이 끝나면 doOnNext도 완료된 후에 호출됩니다. –