RxJava 2 - 然后从未来完成吗?

时间:2017-09-08 17:14:53

标签: java rx-java rx-java2

我有两个完成表,我需要一个接一个地调用。我有这段代码:

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

int