RxSwift - 理论篇00 - 初识 Observable

一、什么是 Observable?

ObservableRx 的核心。我们将会花一些时间来探讨:

  • 什么是 observables?
  • 如何创建 observables?
  • 如何使用 observables?

Rx 的世界里,你将会看到 “observable”“observable sequence” 以及 “sequence” 互换使用。实际上,它们都是一样的意思。你甚至可能偶尔还会看到 “stream” 时不时的抛出来,特别是来自那些(从一个不同的响应式编程环境进入到 RxSwift 的)开发者们。“stream” 也指的是同样的事物,但是在 RxSwift 中,所有人都习惯称之为 sequence,而不是 stream
在 RxSwift 中:

Everything is a sequence.png

...或者是以 sequence 的形式工作的事物。Observable 只是一个序列(sequence),并且具有一些特殊的能力。其中之一,实际上也是最重要的一个,就是 它是异步的(asynchronous.)。在一段时间内,Observables 可以产生事件,这个过程被称之为 发射/发出(emitting)。事件可以包含值(value),例如 数字 或者 自定义类型的实例,或者它们可以是识别的手势,例如 点击(tap)。
概念化这一点的最好方法之一是使用大理石图(只是在时间线上绘制的值)。
marble diagram.png

从左到右的箭头表示时间,编号的圆圈表示序列的元素。元素1将被发射,一段时间将会过去,然后2和3将被发射。你问多少时间? 它可能在可观察者(observable)的整个生命周期的任何阶段。 这将带您认识可观察者的生命周期。

二、observable 的生命周期(lifecycle)

在之前的 marble diagram 中,observable 发射了3个元素。当 observable 发射一个元素时,它是在所谓的 next 事件 中发生的。
这里是另外一个 marble diagram,这次包含一个垂直条,它表示 observable 之路的尽头。

Vertical bar.png

这个 observable 发射了3个 tap(点击)事件,然后结束。这个被称为 completed 事件,因为它已经被终止。例如:也许点击事件在一个已经被 dismiss 的视图上。重要的是,observable 已经终止,并且不能够再发射任何东西。这种是正常终止。然后,有时候一些事情会出错。
red x.png

一个错误已经在这个 marble diagram 上发生,错误由红色 X 来表示。observable 发出包含错误的 error 事件。这与当 observable 正常终止并发出一个 completed 事件没有什么不同。如果 observable 发出一个错误事件,它也会被终止,并且不能再发出任何其它东西。

三、快速回顾

  • observable 发出包含元素(element) 的 next 事件,它可以继续这样做,直到它:
  • 发出 error 事件并终止
  • 发出 completed 事件并终止
  • 一旦 observable 被终止,它就不再发出事件。
    直接从 RxSwift 的源代码中举例说明,这些事件都是用枚举的 case 来表示的。
/// Represents a sequence event.
///
/// Sequence grammar:
/// **next\* (error | completed)**
public enum Event {
    /// Next element is produced.
    case next(Element)
    /// Sequence terminated with an error.
    case error(Swift.Error)
    /// Sequence completed successfully.
    case completed
}

在这里,你可以看到:
.next 事件包含一个 Element 的实例。
.error 事件包含一个 Swift.Error 的实例。
.completed 事件只是简单地停止事件,不包含任何数据。

你可能感兴趣的:(RxSwift - 理论篇00 - 初识 Observable)