gpt4 book ai didi

java - RxJava 2 - andThen 可以从 future 完成?

转载 作者:行者123 更新时间:2023-11-30 02:23:56 25 4
gpt4 key购买 nike

我有两个可完成的东西,我需要一个接一个地调用。我有这个代码:

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 中获得此行为?

最佳答案

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

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

关于java - RxJava 2 - andThen 可以从 future 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46121577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com