reactive-programming - RxJava : Can you give me a real live scenario to use flatMap instead of map

标签 reactive-programming rx-java

我真的不明白什么时候使用 flatmap 而不是 map,也没有找到一个很好的例子。
你能想出一个好的场景来选择平面 map 而不是 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

关于reactive-programming - RxJava : Can you give me a real live scenario to use flatMap instead of map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24046355/

相关文章:

javascript - RxJS 在处理下一个缓冲 block 之前等待 ajax 响应

haskell - react 香蕉 : how to use values from a remote API and merge them in the event stream

java - 嵌套的 webflux 路由总是和最上面的路由一起走

android - 如何用 rxjava2 取消 Observable.timer?

java - 模拟 RxJava 异步 http 调用

java - 在订阅时发出最新值的 RxJava Observable

java - Set<Future<Object>> 中满足谓词的第一个对象

c# - 使用 Rx 为 webservice 调用创建一个轮询请求

javascript - 如何在 Cycle.js 中顺序请求数据?

android - 观察/订阅应该在 View 还是 Presenter 上完成?