我需要帮助构建这个Observable。我想要:
Observable<FilmInfo>
的ID User
FilmInfo
的ID,检索Film
Observable<UserFilm>
和FilmInfo
Film
醇>
我有这个:
@Override
public Observable<UserFilm> filmsForUser(final User user) {
return infoStore.filmsInfoForUser(user.id())
.flatMap(new Func1<FilmInfo, Observable<Film>>() {
@Override
public Observable<Film> call(final FilmInfo info) {
return filmsStore.get(info.id());
}
}).map(new Func1<Film, UserFilm>() {
@Override
public UserFilm call(Film film) {
//I need "info" here!
}
});
}
在这里,我有Observable<Film>
,但我需要将其映射到Observable<UserFilm>
。问题是我无法使用info
变量来构建UserFilm
。我试过combineLatest
,但我不知道如何使用它。
答案 0 :(得分:1)
使用flatMap
:
@Override
public Observable<UserFilm> filmsForUser(final User user) {
return infoStore
.filmsInfoForUser(user.id())
.flatMap(filmInfo -> filmsStore.get(info.id()), (filmInfo, film) -> {
// use filmInfo, film here!
});
}
答案 1 :(得分:0)
知道了!
@Override
public Observable<UserFilm> filmsForUser(final User user) {
return infoStore.filmsInfoForUser(user.id()).flatMap(new Func1<FilmInfo, Observable<UserFilm>>() {
@Override
public Observable<UserFilm> call(FilmInfo info) {
return Observable.combineLatest(Observable.just(info), filmsStore.get(info.id()),
new Func2<FilmInfo, Film, UserFilm>() {
@Override
public UserFilm call(FilmInfo filmInfo, Film film) {
//I have all I need here!
}
});
}
});
}