У меня есть несколько запросов (загрузить файлы) в Observable
, и я хочу выполнить их параллельно. Код:
private void myMethod(List<String> filePathsList) {
List<Observable<String>> observables = new ArrayList<>();
for (String filePath : filePathsList) {
MultipartBody.Part multipartFile = getMultipartFile("some_file_name", filePath);
//here I'm just creating request from Retrofit restclient - the problem can't be here ;)
Observable<String> fileUploadObservable = UploadsRestClient.get().sendFile(multipartFile, "another_post_param");
observables.add(fileUploadObservable);
}
Observable<String> combinedObservable = Observable.zip(observables, new FuncN<String>() {
@Override
public String call(Object... args) {
return null;
}
});
combinedObservable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
//called at the end
}
@Override
public void onError(Throwable throwable) {
//called if error occurs
}
@Override
public void onNext(String string) {
//should be called foreach request, but it's called only after the last one
}
});
}
Проблема в том, что onNext()
вызывается только после того, как сделан последний вызов, до onCompleted()
, как я могу быть вызван после каждого запроса?