Maybe
Maybe 是 Observable 的另外一个版本。它介于 Single 和 Completable 之间,它要么只能发出一个元素,要么产生一个 completed 事件,要么产生一个 error 事件。
- 发出一个元素或者一个
completed事件或者一个error事件 - 不会共享状态变化
如果你遇到那种可能需要发出一个元素,又可能不需要发出时,就可以使用 Maybe。
如何创建 Maybe
创建 Maybe 和创建 Observable 非常相似:
1. func generateString() -> Maybe<String> {
2. return Maybe<String>.create { maybe in
3. maybe(.success("RxSwift"))
5. // OR
7. maybe(.completed)
9. // OR
11. maybe(.error(error))
13. return Disposables.create {}
14. }
15. }
之后,你可以这样使用 Maybe:
1. generateString()
2. .subscribe(onSuccess: { element in
3. print("Completed with element \(element)")
4. }, onError: { error in
5. print("Completed with an error \(error.localizedDescription)")
6. }, onCompleted: {
7. print("Completed with no element")
8. })
9. .disposed(by: disposeBag)
你同样可以对 Observable 调用 .asMaybe() 方法,将它转换为 Maybe。
