RxJava зависимые сетевые вызовы для списка и элемента - PullRequest
0 голосов
/ 06 июня 2019

У меня два сетевых вызова, зависящих друг от друга. После

getBookList(): Single<List<Book>>

getBookCover(bookId): Single<Cover>

Сначала мне нужно сначала получить bookList, затем я вызываю bookCover, потому что для api cover требуется bookId.

После этого мне нужно объединить результат как List<BookWithCover> список.

Как я могу сделать это с RxJava? Я уже искал оператора flatMapIterable, но не смог с ним справиться.

1 Ответ

0 голосов
/ 06 июня 2019

Я думаю, что решение может быть следующим:

getBookList()
    .toObservable()
    .flatMapIterable { it }
    .flatMap { getBookCover(it.bookId).toObservable() }
    .map { /* here convert to BookWithCover */ }
    .toList()

По сути, получите список книг и сопоставьте его с наблюдаемой, которая испускает каждую.С этим получите обложку книги для каждого и сопоставьте ее с BookWithCover.В конце просто поместите все обратно в список.

...