1)我有方法可观察> Moviewoutgenres()返回电影列表,但电影类型的字段为null
2)我有可观察的方法> Moviegerres(Movie M),它返回指定字段的流派列表
我需要实现应返回可观察>的方法,并且列表中的每个电影都将具有流派列表。
我已经实现了这样的流,但我的解决方案是使用可观察到的转换来使用observable.from(),而不是使用tolist()操作员观察到。该解决方案是不可接受的,因为我在第一种方法的引擎盖下使用了SQLBrite包装器对反应性SQL查询。on Completed尚未称为流,因为流始终保持打开状态,因此可以将SQL表的更改传播给所有订户。因此,无法执行Tolist操作员。
public class Movie {
private String id;
private String title;
private List<String> genres;
...
}
1)Observable<List<Movie>> moviesWithoutGenres();
2)Observable<List<String>> movieGenres(Movie m);
应实现:
Observable<List<Movie>> movies();
public Observable<List<Movie>> movies() {
return moviesWithoutGenres()
.switchMap(movies -> Observable.from(movies) // This is an Observable<Movie>
.concatMap(movie -> movieGenres(movie)
.first()
.map(genres -> new Movie(movie.id, movie.title, genres)))
.toList());
}
observable.from()将发射列表中的项目,然后是oncomplete()。诀窍是因为电影制品是您必须的无尽可观察的。first(),以便将oncomplete()称为ancomplete(),而tolist()将正常工作