RxSwift探究之路 RxSwift第一章前半部分学习摘要

xiaoxiao2021-02-28  14

RxSwift第一章学习摘要(部分)

RxSwift主要解决的是异步编程的问题,虽然apple提供了很完善并优秀的api来支持异步编程,比如delegateclosureNotificationGCD,但是这些api使用方式不同,所以复杂度较高,RxSwift的思想是把所有异步事件的编程用统一的编程模式表达,这样使得异步编程更为简单化,可读性更高。

异步编程的需要面临的核心问题是:

1.任务的执行顺序(执行顺序不同可能带来不同的表现);

2.共享可变的数据(可变数据共享存在)

Rx针对的问题:

1.状态,尤其是共享的可变状态的管理。Rx负责管理app的状态在多个异步组件中共享。

2.命令式编程,命令式编程范式是程序猿所习惯的编程范式,但是一旦涉及到大量异步操作和共享状态,命令式编程就会变得异常复杂,而容易出错。并且命令式编程对方法的执行顺序要求较严格,如果方法调用顺序颠倒可能带来较严重的后果。

3.副作用,即某段代码带来的影响,比如存储数据到磁盘、更新屏幕上的label都会带来副作用。如何把副作用掌控起来是一个问题,我们需要区分哪些代码会带来副作用,而哪些仅仅是纯粹的出具处理和数据输出。

Rx的通过处理几个概念来解决上述问题:

1.声明式编程,函数式代码中不会产生任何副作用,你只是告诉计算机要做什么而不用告知它如何去做。RxSwif结合了命令式编程和函数式编程的优点。声明式编程允许你定义行为片段,RxSwift会在相关事件触发时执行这些片段,并把一些不可变的关联数据传递给它们。这就保证了异步编程和一个简单的for循环一样,在执行中数据不会被改变,代码可以以顺序的、确定的方式执行。

2.响应式系统:

响应式系统的特质:

(1).UI永远是最新的,代表app的最新状态;

(2).易恢复性,每个行为都独立定义并且提供灵活的错误恢复。

(3).灵活性,代码处理不同的任务,经常会实现惰性的拉驱动(pull-driven)数据收集,事件节流(event throttling ,表示对一系列事件更新只做一次响应)和资源共享。

(4).消息驱动:组件通过基于消息的通信来提高重用性和独立性,把类的实现和生命周期相解耦。

总结:RxSwift是一个为方便异步编程而实现的库,旨在解决异步编程的核心问题,降低异步编程的复杂度;采用函数式编程范式,具有响应式的系统特性,通过将异步事件抽象成不可变的顺序固定的序列来实现异步状态的统一管理,也因为序列不可变性,使之可以将异步事件提供给任意数量的异步组件来实现状态共享。

后续内容会持续更新,敬请期待。。。

转载请注明原文地址: https://www.6miu.com/read-1900166.html

最新回复(0)