在RxJava中,最接近于CompletableFuture的是Single。您还可以使用Observable,但是要记住它可以发出任意数量的值。futures和RxJava类型之间的一个很大的区别是后者的惰性。当您有一个对CompletableFuture的引用时,您可以确定背后的计算已经开始了,而Single和Observable将很可能只在您订阅它们时才开始运行。知道了这一语义差异,你就可以很容易地用Observable(参考193页的“CompletableFuture and Streams”)或者Single(参见第207页上的“Interoperability with Observable and CompletableFuture”)来交换CompletableFuture。

在使用CompletableFuture<Void>或者Observable<Void>的情况下,对于很少的情况,异步计算的结果可能是不可用的或不相关的。前者很简单,后者可能暗示了一种潜在的无限流或者是空流,无论那意味着什么。使用的rx.Single<Void听起来像一个Void的Future。因此,rx.Completable被推出来了。当您的体系结构有许多没有实际结果的操作时,使用Completable(但是可能会导致异常)。这种架构的一个例子是命令查询分离(CQS),其中的命令是异步的,并且根据定义没有结果。

results matching ""

    No results matching ""