【问题标题】:RxJava 2 - andThen with Completable from Future?RxJava 2 - 然后与未来的 Completable?
【发布时间】:2017-09-09 01:38:22
【问题描述】:

我有两个 Completable 需要一个接一个地调用。我有这个代码:

public Completable getMyCompletable() {
    return getFirstCompletable().andThen(getSecondCompletable());
}

public Completable getFirstCompletable() {
    return Completable.fromFuture(getFirstFuture());
}

public Completable getSecondCompletable() {
    return Completable.fromFuture(getSecondFuture());
}

第二个 Future 依赖于第一个 Future 的完成,否则会失败。问题(我认为)是当我调用 getSecondCompletable() 并将结果传递给 andThen() 时,第二个 Future 被创建并开始运行,即使第二个 Completable 尚未被订阅并且第一个 Future 没有完成了。这会导致第二个 Future 操作失败,而第一个 Future 操作很快就会成功。

我正在将此代码从 RxJava 1 迁移到 RxJava 2。最初该代码使用 FlatMap 连续运行两个 Single<Void> 操作。因为它使用了 FlatMap,所以直到第一个 Future 完成后才创建第二个 Future。如何在 RxJava 2 中获得这种行为?

【问题讨论】:

    标签: java rx-java rx-java2


    【解决方案1】:

    您可以使用与 RxJava 1.x 相同的模式,但也可以推迟创建第二个未来:

    public Completable getSecondCompletable() {
        return Completable.defer(() -> Completable.fromFuture(getSecondFuture()));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      相关资源
      最近更新 更多