如何在链中连接多个 Observable
How connect multiple Observable in chain
我正在使用 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
flatMap
运算符非常适合此操作。只需组合 3 个 observables:
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); ;
}
});
我正在使用 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
flatMap
运算符非常适合此操作。只需组合 3 个 observables:
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); ;
}
});