4

マップの代わりにフラットマップを使用するタイミングがよくわかりません。また、良い例も見つかりません。
マップではなくフラット マップを選択するための適切なシナリオを思いつくことができますか?
ありがとう。

4

1 に答える 1

4

たとえば、Web 経由で A と B の 2 つのリクエストを実行したいとします。ただし、リクエスト B はリクエスト A の結果を必要とするため、リクエスト A の完了後にリクエスト B をリクエストする必要があります。これは の適切なシナリオです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

于 2014-06-09T08:18:37.753 に答える