想象一下,我有一項服務來檢索一些作者(id,名字,姓氏,生日,國籍)和第二項檢索作者書籍(標題,摘要,頁數)的服務。 我希望我的網絡電話能夠爲我返回一份帶有書籍的作者列表。RXJava處理嵌套調用
爲了說明,我的服務將返回Author Authoresponse和BookResponse,並且我想發出AuthorObject的Observable。
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