Observable & Observer 既是可监听序列也是观察者
作者:互联网
Observable & Observer 既是可监听序列也是观察者
有一部分非常特别的序列。它们既是可监听序列也是观察者
textField的当前文本。它可以看成是由用户输入,而产生的一个文本序列。也可以是由外部文本序列,来控制当前显示内容的观察者:
// 作为可监听序列
let observable = textField.rx.text
observable.subscribe(onNext: { text in show(text: text) })
// 作为观察者
let observer = textField.rx.text
let text: Observable<String?> = ...
text.bind(to: observer)
有许多 UI 控件都存在这种特性,例如:switch的开关状态,segmentedControl的选中索引号,datePicker的选中日期等等。
另外,框架里面定义了一些辅助类型,它们既是可监听序列也是观察者。
- AsyncSubject
- PublishSubject
- ReplaySubject
- BehaviorSubject
- ControlProperty
AsyncSubject
AsyncSubject 将在源 Observable 产生完成事件后,发出最后一个元素(仅仅只有最后一个元素),如果源 Observable 没有发出任何元素,只有一个完成事件。那 AsyncSubject 也只有一个完成事件。
它会对随后的观察者发出最终元素。如果源 Observable 因为产生了一个 error 事件而中止, AsyncSubject 就不会发出任何元素,而是将这个 error 事件发送出来。
let disposeBag = DisposeBag()
let subject = AsyncSubject<String>()
subject
.subscribe { print("Subscription: 1 Event:", $0) }
.disposed(by: disposeBag)
subject.onNext("标签:Observable,Observer,text,onNext,观察者,let,监听,subject
来源: https://www.cnblogs.com/liuxiaokun/p/12682514.html