12. RxSwift Single、Completab、May

2020-11-22  本文已影响0人  xxxixxxx

Single

只发出一次事件,常用于网络请求

enum DataError: Error {
    case error1
}

func getData() -> Single<[String: Any]> {
    return Single<[String: Any]>.create { (single) -> Disposable in
        single(.success(["": 1]))
//                single(.error(DataError.error1))
        return Disposables.create {}
    }
}

getData().subscribe { req in
    switch req {
    case .success(let value):
        print(value)
    case .error(let error):
        print(error)
    }
}.disposed(by: disposeBag)

Completable

只会发出completederror 事件,用于只关心操作结果

func cancel() -> Completable {
    return Completable.create { (comp) -> Disposable in
        comp(.completed)
//                comp(.error(ObError.error1))
        return Disposables.create {}
    }
}

cancel().subscribe { rep in
    switch rep {
    case .completed:
        print("成功")
    case let .error(error):
        print(error)
    }
}.disposed(by: disposeBag)

Maybe

也是只能发出一个事件,正常的eventcompletederror


func test() -> Maybe<String> {
    return Maybe<String>.create { (mayBe) -> Disposable in
        mayBe(.success("成功"))
//                mayBe(.completed)
//                mayBe(.error(ObError.error1))
        return Disposables.create {}
    }
}

test().subscribe { event in
    switch event {
    case .success(let value):
        print(value)
    case .completed:
        print("completed")
    case .error(let error):
        print(error)
    }
}.disposed(by: disposeBag)
上一篇下一篇

猜你喜欢

热点阅读