Предположим, у меня есть служба для извлечения некоторых авторов (id, firstname, lastname, birthday, nationality) и вторая служба для извлечения авторской книги (название, резюме, количество страниц). Я бы хотел, чтобы мой сетевой звонок возвратил мне список авторов с их книгами.RXJava обработка вложенных вызовов
Чтобы проиллюстрировать, мои службы возвратят мне AuthorOResponse и BookResponse, и я хотел бы опубликовать Observable of AuthorObject.
public class AuthorResponse {
private String id;
private String firstname;
private String lastname;
private Date birthday;
private String nationality;
}
public class BookResponse {
private String title;
private String summary;
private int pageNumber;
}
public class AuthorObject {
private String id;
private String firstname;
private String lastname;
private Date birthday;
private String nationality;
private List<BookObject> books
}
Моих услуги будут нечто вроде
Observable<List<AuthorResponse>> getAuthors()
Observable<List<BookResponse>> getAuthorBooks(String authorId)
Я хотел бы использовать их, чтобы излучать наблюдаемом, но не могу понять, как это сделать, так как каждый из моих вызовов getAuthorBooks нужен автор.
Я придумал что-то похожее на это, но у меня есть проблема, так как моя concatMap делает меня «свободным» от моего автора.
myServices.getAuthors()
.map(author -> createAuthor())
.concatMap(author -> mWebService.getAuthorBooks(author.getId())
.flatMapIterable(data -> data.items)
.map(book -> addBook())
Кто-нибудь знает, как я мог это сделать?
Это кажется действительно замечательным. Поскольку я хочу испускать Observable, у меня будет flatMap, верните мой автор, но он работает хорошо. Спасибо! –
Tibo