【发布时间】:2018-04-25 20:19:23
【问题描述】:
我有一个获取电影的服务:
Single<List<Movie>> fetchAll();
以及为每部电影获取预告片的服务:
Single<List<Video>> fetchByMovieId(@Path("movie_id") long movieId);
在获取所有电影后,我还想获取他们的预告片并返回一个包含电影及其所有预告片的对象列表。使用 RxJava 实现这一目标的正确方法是什么?
【问题讨论】:
我有一个获取电影的服务:
Single<List<Movie>> fetchAll();
以及为每部电影获取预告片的服务:
Single<List<Video>> fetchByMovieId(@Path("movie_id") long movieId);
在获取所有电影后,我还想获取他们的预告片并返回一个包含电影及其所有预告片的对象列表。使用 RxJava 实现这一目标的正确方法是什么?
【问题讨论】:
ps:你应该避免提出很多请求。尝试按需执行此操作。
yourClient.fetchAll()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.toObservable()
.flatMapIterable(movies -> movies)
.flatMap(movie -> yourClient.fetchByMovieId(movie.getId()))
.toList()
.subscribe()...
【讨论】:
Single<List<Videos>>,我希望它更像:Single<List<Pair<Movie, List<Videos>>>