Как работать со списком Maybe и zip-оператором в rxJava - PullRequest
1 голос
/ 25 апреля 2019

Попытка использовать оператор zip со списком Maybe, но возникли некоторые проблемы:

1) У меня есть Posts с двумя типами данных, скажем Video, Image и Audio.

2) Теперь я хочу загрузить эти сообщения на сервер и ждать, когда будет загружено каждое сообщение (Да, я могу отправить массив, но это только для примера)

3) Для этого я могу zip мой список mutableListOf<Maybe<Response> и ждать результата

4) Перед отправкой я должен заполнить свой список наблюдаемых

posts.map {
  when(type) {
      Video -> list.add(createPost()) // Awaitng Response result

      Image -> list.add(createPost()) // Awaiting Response result

      Audio -> list.add(Maybe.empty()) // Just skip this data type
  }
}

Итак, проблема в следующем:

Когда я делаю

Maybe.zip(list) { arg -> arg }.flatMap{ ... }

и мой список содержит Maybe.empty(), тогда .flatMap никогда не будет вызван, но мне нужно обработать другие сообщения.

Я пытался использовать defaultIfEmpty(arrayOf()), но он просто возвращает emtpy для всего, даже когда у меня есть данные.

Так, как я могу справиться с этим?

...