RxJava:你能给我一个实际的场景,说明何时应该使用flatMap而不是map吗?

4

我不太理解何时使用flatmap而不是map,也没有找到好的例子。您能想出一个好的场景来选择使用flatmap吗?谢谢。

1个回答

4
例如,我们想通过网络进行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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接