Rx简介

使用可观察流进行异步编程的API。

Rx结合了Observer模式,迭代器模式和函数式编程的最佳创意。

您可以轻松创建事件流,使用类似于查询的运算符来组成和转换流,订阅任何可观察的流以执行副作用。

Rx无处不在,它适用于一切 :RxJava,RxJS,rx.NET,RxScala,RxCpp,RxRb,RxPY,RxGO等…(http://reactivex.io/languages.html)

我个人开始在ORFIUM(https://www.orfium.com)的最新iOS应用程序上使用它,我在问自己为什么以前不使用它。 我个人的观点是,至少每个移动开发人员都应该尝试一下(稍后您将感谢我 )。

Rx的基础

Microsoft的团队面临着解决异步,可伸缩,实时应用程序开发问题的挑战。 他们独立于公司的核心团队在图书馆工作,大约在2009年某个时候,他们提供了一个新的客户端和服务器端框架,称为.NET(Rx)Reactive Extensions。

它是.NET 3.5的可安装附件,后来成为.NET 4.0中的内置核心库。 自2012年以来,它一直是开源组件,并允许其他语言和平台重新实现相同的功能,这使Rx成为跨平台标准。

今天,我们有RxJS,RxKotlin,RxSwift,rx.NET,RxScala等。 所有这些库都努力实现相同的行为和相同的表达性API。 最终,使用RxSwift创建iOS应用的开发人员可以与其他使用Web上的RxJS的程序员自由讨论应用逻辑。

Rx代码的三个构建块是可观察对象,运算符和调度程序。

可观察的

观测值是Rx的核心。 您可能会看到可观察的,可观察的序列,序列或流,实际上它们都是同一回事。 一切都是一个序列。

可观察只是一个序列,具有某些特殊功能。 其中之一(实际上是最重要的)是异步的。 在一段时间内,可观察到的东西会产生事件,其过程称为发射。 事件可以包含值,例如数字或自定义类型的实例,或者它们可以被识别为手势,例如轻击。

一个observable发出包含元素的next事件。 它可以继续执行以下操作:

…发出错误事件并终止,或者

…发出已完成的事件并终止。

可观察对象一旦终止,就无法再发出事件。

让我们创建一个可观察的

可观察对象在收到订阅之前不会执行任何操作。

如何订阅一个Observable?

订阅触发一个可观察的事件开始发出事件,直到发出.error或.completed事件并终止。 我们还可以通过取消对可观察对象的订阅来手动使其终止。 (处理)

订阅元素处理程序

订阅发生在数字上。 订阅 ,此时可观察对象正在发出事件。

输出

 下一个(1) 
下一个(2)
下一个(3)
已完成

订阅事件处理程序

输出

  1个 
2
3
已完成