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之间的关系

  1. 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 { let source: Observable init(raw: Observable) { self.source = raw } } ```

results matching ""

    No results matching ""