为什么使用RxSwift?

我们编写的代码绝大多数都涉及对外部事件的响应。当用户点击操作时,我们需要编写一个@IBAction事件来响应。我们需要观察通知,以检测键盘何时改变位置。当网络请求响应数据时,我们必须提供闭包来执行。我们使用KVO来检测变量的变化。所有这些不同的系统使我们的代码增加了不必要地复杂。如果有一个一致的系统来处理我们的所有的调用/响应代码,难道不是更好吗?Rx就是这样一个系统。

RxSwift是用于大多数主要语言和平台的响应扩展(即Rx)的正式实现。

概念

每一个Observable的实例都是一个序列

Observable序列相比于Swift序列的关键优势点在于它能够异步地接收元素。这是RxSwift精髓所在,其他的一切都扩展了这个概念。

  • Observable(ObservableType)等效于Sequence
  • observableType.subscribe(_:)方法等效于Sequence.makeIterator()
  • ObservableType.subscribe(_:)接收一个观察者ObserverType参数,它将被订阅自动接收由可观察到的序列事件和元素,而不是在返回的生成器上手动调用next()

如果一个Observable发出一个next事件(Event.next(Element)),它还能够继续发出更多的事件。但是,如果一个Observable发出一个error事件(Event.error(ErrorType))或者一个completed事件(Event.completed),那么这个Observable序列就不能给订阅者发送其他的事件了。

Observables and Observers(又名subscribers -- 订阅者)

除非有订阅者,否则Observable不会执行它们的闭包。

在下面的例子中,Observable的闭包将不会被执行,因为没有订阅者订阅。

_ = Observable<String>.create({ (observingString) -> Disposable in
print("the code will not be executed")
observingString.onNext("

最新文章

  1. CSS3总结
  2. 从头开始构建LINUX[内核更新和资料]
  3. Fxx and game
  4. java基础-继承
  5. HDU-1233 还是畅通工程
  6. 编辑距离及其动态规划算法(Java代码)
  7. 小结MapReduce 程序的流程及设计思路
  8. Geometry Stage in Rendering pipeline (读书笔记2 --- Real-Time rendering)
  9. androidSDK无法更新的解决方法之一
  10. NLPIR_Init文本分词-总是初始化失败,false,Init ICTCLAS failed!
  11. Karma:1. 集成 Karma 和 Jasmine 进行单元测试
  12. dp4
  13. Get与Post的一些总结
  14. hdu 2602 Bone Collector 背包入门题
  15. 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法
  16. html标签对应的英文原文
  17. pom.xml中&lt;dependency&gt;
  18. 【转】Xcode7真机调试iOS应用程序
  19. Linux启动新进程的几种方法及比较[转]
  20. 【servlet】 第一个servlet

热门文章

  1. PHP的面向对象 — 封装、继承、多态
  2. SQL Server使用导入导出向导导入超过4000个字符的字段的数据
  3. CoreAnimation学习,学习总结,记录各种过程中遇到的坑
  4. 请教 C# 异步 async await 问题
  5. MVC在VIEW中动态控制htmlAttributes的方法
  6. thinkphp5.0学习笔记(四)数据库的操作
  7. maven下载jar包失败后无法再次重新下载
  8. php中的冒泡排序算法
  9. 【Android Developers Training】 39. 获取文件信息
  10. python迭代器生成器(三)