【问题标题】:RxJava update data after first Completable but before returning next singleRxJava 在第一个 Completable 之后但在返回下一个单曲之前更新数据
【发布时间】:2018-05-23 03:59:34
【问题描述】:

我需要做的是进行一个可完成的调用(验证会话令牌),然后在完成后,在下一个请求中更新会话令牌(返回最后一个调用,这是一个单一的)。

这是我目前所拥有的,它可以完成这项工作,但它看起来很乱。必须有一种更清洁的方法来做到这一点? 我正在寻找类似于 flatmap() 工作方式的解决方案,但我想返回最后一个单曲。

Single<ItemsResponse> getItems() {

    return verifySessionBeforeApiRequest().andThen
    (Completable.create(new CompletableOnSubscribe() {
        @Override
        public void subscribe(CompletableEmitter e) throws Exception {
            nextRequest.setSession(getSessionId());
            e.onComplete();
        }
    })).andThen(makeFinalCall(nextRequest));
}

【问题讨论】:

    标签: java android rx-java rx-java2


    【解决方案1】:

    找到了更好/更清洁的解决方案。而不是 verifySessionBeforeApiRequest() 返回一个 Completable,我改变了我的思维过程并让它返回一个包含当前或新 sessionID(如果需要)的 Single。看起来像这样。

     public Single<ItemsResponse> getItems() {
        return verifySessionBeforeApi().flatMap(new Function<String, SingleSource
                <? extends ItemsResponse>>() {
            @Override
            public SingleSource<? extends ItemsResponse> apply(String sessionId)
                    throws Exception {
                return makeFinalCall(new nextRequest(sessionId));
            }
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-31
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      相关资源
      最近更新 更多