Mot*_*lal 4 android reactive-programming rx-java rx-android rx-java2
我是 RxJava 的新手。我的经验主要来自这些教程: here和here。
现在,我发现自己在使用 Retrofit2 进行 API 调用时会返回一个Obesrvable<AccessToken>
. 客户端将调用此服务如下:
public Observable<TokenResult> authenticateWithClientCredentials() {
return authService.authenticate("client_credentials").take(1);
}
Run Code Online (Sandbox Code Playgroud)
Authenticator
调用的类#authenticateWithClientCredentials()
将从客户端调用。
我想要实现的是Observable<Boolean>
从Authenticator
类中返回一个,一旦 API 调用完成,即 insideonComplete()
表示访问令牌已成功获取并保存在Authenticator
类内的缓存中。
我试过defer
接线员,但我还是迷路了。
编辑
我知道我可以在参数中传递一个回调,但是 Rx 的想法不是取代旧的经典回调方法吗?
如果我正确理解了您的问题,那么这就是您要搜索的内容:
client.authenticateWithClientCredentials()
.map(token -> {
// save `token` into cache
return token;
})
.flatMap(integer -> Observable.just(Boolean.TRUE))
.subscribe(aBoolean -> {
// success
}, throwable -> {
// error
});
我不知道你到底为什么想要Observable<Boolean>
,在这种情况下 Completable 更受欢迎,因为流已成功完成或没有。尽管如此,使用Observable<Boolean>
返回类型发布了解决方案。
这是Completable
方法:
client.authenticateWithClientCredentials()
.flatMapCompletable(integer -> {
// save `token` into cache
return Completable.complete();
})
.subscribe(() -> {
// success
}, throwable -> {
// error
});
归档时间: |
|
查看次数: |
4953 次 |
最近记录: |