Retrofit2 RxAndroid+;改造2,获得一份图书清单
所以,假设我需要为Android应用程序获取最喜爱的书籍列表 我有id列表,但一次只能获取一本书,因此,我实际上没有Retrofit2 RxAndroid+;改造2,获得一份图书清单,retrofit2,rx-android,Retrofit2,Rx Android,所以,假设我需要为Android应用程序获取最喜爱的书籍列表 我有id列表,但一次只能获取一本书,因此,我实际上没有bookAPI.getFavoriteBooks(ListofFavoriteId)方法调用(服务器没有该方法的端点),但我必须为列表中的每个id调用bookAPI.getBook(id),以获取所有喜爱的书籍,在我得到它们之后,我应该返回一个包含结果的列表 到目前为止,我找到的答案假设我可以调用一个方法可观察的getFavoriteBooks(列表ID),但在本例中我没有这个方法
bookAPI.getFavoriteBooks(ListofFavoriteId)
方法调用(服务器没有该方法的端点),但我必须为列表中的每个id
调用bookAPI.getBook(id)
,以获取所有喜爱的书籍,在我得到它们之后,我应该返回一个包含结果的列表
到目前为止,我找到的答案假设我可以调用一个方法可观察的getFavoriteBooks(列表ID)
,但在本例中我没有这个方法
使用RxAndroid和改型2有没有办法解决这个问题?很难从您的问题中判断这是否符合您的需要,但您可以尝试:
Observable.fromIterable(listOfIds)
.flatMap(new Function<Integer, ObservableSource<Book>>() {
@Override
public ObservableSource<Book> apply(Integer integer)
throws Exception {
return bookApi.getBook(id);
}
})
.toList()
只需确保为您的用例使用正确的调度程序
(请小心,因为此订阅呼叫不会处理错误,但我想您可以很容易地找到答案)很难从您的问题中判断这是否符合您的需要,但您可以尝试:
Observable.fromIterable(listOfIds)
.flatMap(new Function<Integer, ObservableSource<Book>>() {
@Override
public ObservableSource<Book> apply(Integer integer)
throws Exception {
return bookApi.getBook(id);
}
})
.toList()
只需确保为您的用例使用正确的调度程序
(请小心,因为此订阅调用不会处理错误,但我想您可以很容易地找到答案)Life saver。成功了,谢谢!尽管我读了更多关于函数式java的书,但我认为将getBook()映射到整数列表更容易;类似于map(getBook,ids)的东西,并从那里开始工作,但您的答案出现在测试我的想法之前(通过阅读本文,这看起来太简单了),它工作了,所以,再次感谢!救生员。成功了,谢谢!尽管我读了更多关于函数式java的书,但我认为将getBook()映射到整数列表更容易;类似于map(getBook,ids)的东西,并从那里开始工作,但您的答案出现在测试我的想法之前(通过阅读本文,这看起来太简单了),它工作了,所以,再次感谢!