Я хочу загрузить несколько изображений на сервер, используя Rx Java и Retrofit, и хочу вызвать onNext, как только все они будут успешно загружены - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу загрузить несколько изображений на сервер, используя модификацию / RxJava один за другим, а не параллельно. Я хочу получить ответ, как только они все были успешно загружены. Мне нужен этот результат в Array List.

Код для загрузки одного изображения

@Multipart
@POST("addImage")
Observable<ImageUploadResponse> savePhoto(@Part MultipartBody.Part image);

Ответ от сервера

{
   "isSuccess":true,
   "isError":false,
   "message":"You are successfully added image",
   "payLoad":{
      "imagePath":"public\/ContainerItem\/vTpjFdTNHj5QK6rKrBuuiwWG3SYKp1PxxpOJmKIE.jpeg",
      "updated_at":"2018-04-27 07:34:37",
      "created_at":"2018-04-27 07:34:37",
      "id":389
   }
}

Я хочу знать, какие операторы RxJava будут использоваться в случае, когда я хочу получить результат после загрузки всех изображений.

1 Ответ

0 голосов
/ 28 апреля 2018

Сбор результатов в список можно выполнить с помощью toList. Предполагая, что ваши изображения сохранены в List с именем imageList, вы можете сделать что-то вроде -

Observable.fromIterable(imageList)
        .flatMap(image -> service.savePhoto(image))
        .toList()
        .subscribeOn(Schedulers.io())
        .subscribe(...)
...