• Maybe
    • 如何创建 Maybe

    Maybe

    MaybeObservable 的另外一个版本。它介于 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"))
    4. // OR
    5. maybe(.completed)
    6. // OR
    7. maybe(.error(error))
    8. return Disposables.create {}
    9. }
    10. }

    之后,你可以这样使用 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