RxJava:你能给我一个用flatMap代替map的真实场景吗?



我真的不明白什么时候使用flatmap而不是map,我也没有找到一个很好的例子。
你能想出一个好的场景来选择平面地图而不是地图吗?
谢谢。

例如,我们想通过web做2个请求,A和B。但是,请求B必须在请求A完成之后才被请求,因为请求B需要请求A的一些结果。这是flatMap的一个很好的场景。示例代码如下:

interface Movie {
}
interface UserInfo {
    List<Long> getFavoriteMovies();
}
public Observable<UserInfo> requestUserInfo(long userId) {
    // ...
}
public Observable<List<Movie>> requestMovieList(List<Long> movieIds) {
    // ...
}
public Observable<List<Movie>> requestUserMovieList(long userId) {
    return requestUserInfo(userId).flatMap(new Func1<UserInfo, Observable<List<Movie>>>() {
        @Override
        public Observable<List<Movie>> call(UserInfo user) {
            return requestMovieList(user.getFavoriteMovies());
        }
    });
}

此外,Ben Christensen的幻灯片上有一些RxJava的好例子:https://speakerdeck.com/benjchristensen/rxjava-goto-aarhus-2013

相关内容

  • 没有找到相关文章

最新更新