RxJava:你能给我一个真实的场景来使用flatMap而不是map

时间:2014-06-04 19:52:34

标签: reactive-programming rx-java

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

1 个答案:

答案 0 :(得分:4)

例如,我们想通过网络完成2个请求,A和B.但是,请求A必须在请求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