Попытка использовать оператор 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 для всего, даже когда у меня есть данные.
Так, как я могу справиться с этим?