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
已完成