代码之家  ›  专栏  ›  技术社区  ›  capt.swag

RxJava,组合两个可观测值并发出第二个可观测值

  •  0
  • capt.swag  · 技术社区  · 8 年前

    我正在发出两个网络请求,比如N1和N2。这是两个独立的请求,彼此不依赖。

    N1型

        Observable<GenresListResponse> genresListResponseObservable =
                tmdbInterface.getGenresList(BuildConfig.API_KEY);
    

    N2

        Observable<NowPlayingMoviesListResponse> nowPlayingMoviesListResponseObservable =
                tmdbInterface.getNowPlayingMovies(BuildConfig.API_KEY);
    

    一旦我得到这两种类型的回复,我需要从类型列表中找到每部正在播放的电影的类型,并将类型设置为正在播放的电影列表中的每一项。最后,发出可观察的NowPlayingMoviesListResponse,它现在包含作为字符串的类型。

    NowPlayingMoviesList POJO类包含setgree(字符串类型),在从genresList推导出类型后,可以使用它来设置类型。

    为了更好地理解,这是来自服务器的JSON值。

    体裁json

    {
        "genres": [
            {
                "id": 28,
                "name": "Action"
            },
            {
                "id": 12,
                "name": "Adventure"
            }
        ]
    }
    

    现在播放电影。json

    {
        "results": [
            {
                "vote_count": 3290,
                "id": 346364,
                "original_language": "en",
                "original_title": "It",
                "genre_ids": [
                    18,
                    27,
                    53
                 ]
            }
        ]
    }
    

    现在在电影模型类中,我有了setGenres(字符串类型),它在比较ID和类型请求的响应后设置了类型。

    1 回复  |  直到 8 年前
        1
  •  1
  •   charlag    8 年前

    有多种等待方式 Observable 溪流。 如果您只想在每个流发射元素时发射,那么有一个 Zip 操作人员如果您想等待所有流至少发射一次,但在那之后,您希望每个发射都用最后一个值触发-有一个 CombineLatest 操作人员

    据我所知,你的每个流只发出一次,所以我想你需要压缩。我还建议您制作流媒体 Single (现代改装适配器可以做到这一点)。