android - RxJava : Know when observable is finished and return Boolean Observable to the caller

标签 android rx-java reactive-programming rx-android rx-java2

我是 RxJava 的新手。我的经验主要来自那些教程: Here , 和 here .

现在,我发现自己在使用 Retrofit2 进行 API 调用时会返回 Obesrvable<AccessToken>。 .客户端将按如下方式调用此服务:

public Observable<TokenResult> authenticateWithClientCredentials() {
        return authService.authenticate("client_credentials").take(1);
}

其中一个名为 Authenticator 的类会调用#authenticateWithClientCredentials()来自客户。

我想要实现的是返回一个 Observable<Boolean>来自 Authenticator类,一旦 API 调用完成,即在 onComplete() 中表明访问 token 已被获取并保存在 Authenticator 中的缓存中上课成功。

我尝试了 defer运算符(operator),但我还是迷路了。

编辑

我知道我可以在参数中传递回调,但 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
          });

关于android - RxJava : Know when observable is finished and return Boolean Observable to the caller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46848019/

相关文章:

android - 在原生 Android 游戏中使用 Box2D 而不是使用 HTML5 canvas 的 Box2Dweb 有很大的不同吗?

android - Android xml 底部空间过大

node.js - 如何使用 RxJS、MySQL 和 NodeJS

reactive-programming - 在 Mono<String> 中转换 Mono<Void> 添加一个值

android - 在 Android Studio 中成功构建仍然在设备上崩溃

android - fragment 内 fragment 中的上下文菜单(ActionMode)

android - "Subject.asObservable()"和主题本身 "Subject"之间有什么区别吗?

java - RxJava : return random objects from Observable correctly

java - 在可观察对象发出一定数量的项目后触发一个 Action

javascript - 每次流结束时都会延迟随机时间的 Observable