美文网首页
RXSwift:

RXSwift:

作者: 紫嫣沁 | 来源:发表于2021-09-14 18:23 被阅读0次

中文官网地址:https://beeth0ven.github.io/RxSwift-Chinese-Documentation/

1,Observable:可监听序列,也称为可被观察的序列,可以用于描述元素异步产生的序列

2,subscribe:是响应发出的序列,即产生的事件

next - 序列产生了一个新元素

error - 创建序列时产生了一个错误,终止

completed - 序列得所有元素都已经成功产生,整个序列完成

3,Observable包含的特征序列:(Observable可以发出多个元素)

> Single:要么只能发出一个元素,要么产生一个error时间

> Completable:要么产生一个completed事件,要么产生一个error事件

> Maybe:要么发出一个元素,要么产生一个completed事件,要么产生一个error事件

> Driver:不会产生error事件,一定在MainScheduler监听

> Signal:和Driver相似,唯一的区别是,Driver会对新观察者回放上一个元素,而Signal不会对新观察者回放上一个元素

> ControlEvent:专门用于描述UI控件所产生的事件

4,Observer:观察者,是用来监听事件,对事件做出相应的,简单来说就是.subscribe后边那一坨,或者.bind 后边那一坨等

tap.subscribe(onNext: { [weak self] in

    self?.showAlert()

}, onError: { error in

    print("发生错误: \(error.localizedDescription)")

}, onCompleted: {

    print("任务完成")

})

创建观察者最直接的方法就是在 Observable 的 subscribe 方法后面描述,事件发生时,需要如何做出响应。而观察者就是由后面的 onNext,onError,onCompleted的这些闭包构建出来的。

5,Observer包含的特征观察者:

AnyObserver:用来描述任意一种观察者

Binder:不会处理错误事件,确保绑定都是在给定Scheduler上执行(默认MainScheduler)

例:

let observer: AnyObserver<Data> = AnyObserver { (event) in

    switch event {

    case .next(let data):

        print("Data Task Success with count: \(data.count)")

    case .error(let error):

        print("Data Task Error: \(error)")

    default:

        break

    }

}

URLSession.shared.rx.data(request: URLRequest(url: url))

    .subscribe(observer)

    .disposed(by: disposeBag)

—————————————————————————

usernameValid

    .bind(to: usernameValidOutlet.rx.isHidden)

    .disposed(by: disposeBag)

可以看作是:

let observer: AnyObserver<Bool> = AnyObserver { [weak self] (event) in

    switch event {

    case .next(let isHidden):

        self?.usernameValidOutlet.isHidden = isHidden

    default:

        break

    }

}

usernameValid

    .bind(to: observer)

    .disposed(by: disposeBag)

6,操作符:

filter - 过滤

map - 转换

zip - 合并

相关文章

网友评论

      本文标题:RXSwift:

      本文链接:https://www.haomeiwen.com/subject/xyacgltx.html