Observable
Event
介绍Observable之前,我们先来了解一个Event这个概念 在RxSwift中,所有传递的东西都是Event,如对象、UI点击事件等等. 这些东西,都通过Event包装,然后通过Observable进行传递。
/// Represents a sequence event.
///
/// Sequence grammar:
/// **next\* (error | completed)**
public enum Event<Element> {
/// Next element is produced.
case next(Element)
/// Sequence terminated with an error.
case error(Swift.Error)
/// Sequence completed successfully.
case completed
}
从RxSwift中Event的定义可以看出,其中包含了:next(Element)
、error(Swift.Error)
、completed
三个事件。
- next(Element)传递当前Event携带的数据
- error(Swift.Error)传递错误信息
- completed 表示当前序已经结束,不在会有新的Event事件到达
- 其中error与completed为互斥事件,都预示着该序列的结束
-> next(1) -> next(2) -> next(3) -> next(4) -> ... -> -> next(n) -> error(Error) -> end -> next(n) -> completed -> end
面向信息流编程 所有的操作,最终都转变为 序列中的一个一个Event,等待订阅者的处理,然后将处理结果继续传下去。一个队列接着一个队列。知道最终处理完成。
不同序列,对于传输Event的方式个不相同。Event的类型也各不相同。
Observable 与 Observer之间的关系
- 1v1 1vn nv1 nvn
相当于一个列表,列表里面是Event 所有的 subscribe、bind、disposed都是基于Observable这个Queue来进行的。
函数
combineLatest
withLatestFrom Merges two observable sequences into one observable sequence by using latest element from the second sequence every time when
self
emits an element.
public struct PrimitiveSequence