RxFuture 5.1.0

RxFuture 5.1.0

muukiimuukii 维护。



RxFuture 5.1.0

  • 作者
  • Muukii

RxFuture

一个临时的解决方案

这是什么?

一个库,提供由 RxSwift 支持的 Future/Promise 模式 API。

为什么我们需要这个?

首先,Future/Promise 模式适合返回异步任务的单个结果。

func doSomething() -> Future<E>

Future/Promise 模式还可以使用 RxSwift 的 API 来实现。使用 Observable 或一些 PrimitiveSequence。

在这种情况下,问题在于:首先,Observable 并不知道会有多少次订阅。所以,Observable 总是应该是共享序列。如果不是,使用 Observable 包装的任务将逐个执行。其次,由 Observable 包装的任务不知道何时开始。它依赖于订阅。

第二种情况依赖于 RxSwift。几乎所有的 RxSwift 中的 Observables 都是冷流 Observable。

func doSomething() -> Observable<E>

这个函数的名称是 "do something",但实际上,"something" 不会直到订阅才会执行。

下面的名称可能比上面的更好。

func taskToDoSomething() -> Observable<E>

基本来说,Future 将立即运行包装的任务。因此,我创建了一个类似 Future 的对象,利用 RxSwift 实现。

Single<E> 有什么不同?

RxFuture 与 Single 不同。我们可以说 RxFutureCombine.Future 运行类似。
RxFutureCombine.Future 会立即运行它们的任务,并且它们会缓存结果,直到被释放。