• Completable
    • 如何创建 Completable

    Completable

    CompletableObservable 的另外一个版本。不像 Observable 可以发出多个元素,它要么只能产生一个 completed 事件,要么产生一个 error 事件。

    • 发出零个元素
    • 发出一个 completed 事件或者一个 error 事件
    • 不会共享状态变化

    Completable 适用于那种你只关心任务是否完成,而不需要在意任务返回值的情况。它和 Observable<Void> 有点相似。

    如何创建 Completable

    创建 Completable 和创建 Observable 非常相似:

    1. func cacheLocally() -> Completable {
    2. return Completable.create { completable in
    3. // Store some data locally
    4. ...
    5. ...
    6. guard success else {
    7. completable(.error(CacheError.failedCaching))
    8. return Disposables.create {}
    9. }
    10. completable(.completed)
    11. return Disposables.create {}
    12. }
    13. }

    之后,你可以这样使用 Completable

    1. cacheLocally()
    2. .subscribe(onCompleted: {
    3. print("Completed with no error")
    4. }, onError: { error in
    5. print("Completed with an error: \(error.localizedDescription)")
    6. })
    7. .disposed(by: disposeBag)

    订阅提供一个 CompletableEvent 的枚举:

    1. public enum CompletableEvent {
    2. case error(Swift.Error)
    3. case completed
    4. }
    • completed - 产生完成事件
    • error - 产生一个错误