如何在链中连接多个Observable

时间:2016-09-15 08:25:54

标签: android rx-java retrofit2 rx-android

我正在使用TheMovieDb API https://www.themoviedb.org/documentation/api,如果我想进行身份验证,我必须使用三个步骤来执行此操作 - 获取令牌,使用令牌创建会话并获取会话ID。我想使用3 Observable来执行此操作,但我不知道如何链Observables来执行此操作。

我的Observables

public interface AuthenticationService {

@GET("authentication/token/new")
Observable<Token> getMdbToken();

@GET("authentication/token/validate_with_login")
Observable<Token> createSessionId(Credentials credentials,String token);

@GET("authentication/session/new")
Observable<Session> getSessionId(String token);
}

这可以链Observables来制作一个Observable吗?我没有使用Observables

的经验

1 个答案:

答案 0 :(得分:0)

flatMap运营商是理想的选择。只需撰写3个可观察量:

getMdbToken()
        .flatMap(new Func1<Token, Observable<Token>>() {
            @Override
            public Observable<Token> call(Token token) {
                return createSessionId(credentials, token);
            }
        }).flatMap(new Func1<Token, Observable<Session>>() {
    @Override
    public Observable<Session> call(Token token) {
        return getSessionId(String token); ;
    }
});