Completable
Completable 是 Observable 的另外一个版本。不像 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. ...
7. guard success else {
8. completable(.error(CacheError.failedCaching))
9. return Disposables.create {}
10. }
12. completable(.completed)
13. return Disposables.create {}
14. }
15. }
之后,你可以这样使用 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 - 产生一个错误
