Rxjs 函数式编程 响应式编程 观察者模式 推送体系 惰性

新概念:

在 RxJS 中用来解决异步事件管理的的基本概念是:

Observable (可观察对象): 表示一个概念,这个概念是一个可调用的未来值或事件的集合。
Observer (观察者): 一个回调函数的集合,它知道如何去监听由 Observable 提供的值。
Subscription (订阅): 表示 Observable 的执行,主要用于取消 Observable 的执行。
Operators (操作符): 采用函数式编程风格的纯函数 (pure function),使用像 map、filter、concat、flatMap 等这样的操作符来处理集 合。
Subject (主体): 相当于 EventEmitter,并且是将值或事件多路推送给多个 Observer 的唯一方式。
Schedulers (调度器): 用来控制并发并且是中央集权的调度员,允许我们在发生计算时进行协调,例如 setTimeout 或 requestAnimationFrame 或其他。

subscribe 调用在同一 Observable 的多个观察者之间是不共享的。当使用一个观察者调用 observable.subscribe 时,Observable.create(function subscribe(observer) {...}) 中的 subscribe 函数只服务于给定的观察者。对 observable.subscribe 的每次调用都会触发针对给定观察者的独立设置。

与Observable 不一样:
Subject 是一种特殊类型的 Observable,它允许将值多播给多个观察者,所以 Subject 是多播的,而普通的 Observables 是单播的(每个已订阅的观察者都拥有 Observable 的独立执行)。

Subject 的其中一个变体就是 BehaviorSubject,它有一个“当前值”的概念。它保存了发送给消费者的最新值。并且当有新的观察者订阅时,会立即从 BehaviorSubject 那接收到“当前值”。
ReplaySubject 类似于 BehaviorSubject,它可以发送旧值给新的订阅者,但它还可以记录 Observable 执行的一部分。
AsyncSubject 是另一个 Subject 变体,只有当 Observable 执行完成时(执行 complete()),它才会将执行的最后一个值发送给观察者。

4.操作符
操作符是允许复杂的异步代码以声明式的方式进行轻松组合的基础代码单元。
订阅 output 会导致 input Observable 也被订阅。我们称之为“操作符订阅链”。

实例运算符是使用 this 关键字来指代输入的 Observable 的函数。
静态操作符是附加到 Observalbe 类上的纯函数,通常用来从头开始创建 Observalbe 。

5.调度器

调度器控制着何时启动 subscription 和何时发送通知。它由三部分组成:

调度器是一种数据结构。 它知道如何根据优先级或其他标准来存储任务和将任务进行排序。
调度器是执行上下文。 它表示在何时何地执行任务(举例来说,立即的,或另一种回调函数机制(比如 setTimeout 或 process.nextTick),或动画帧)。
调度器有一个(虚拟的)时钟。 调度器功能通过它的 getter 方法 now() 提供了“时间”的概念。在具体调度器上安排的任务将严格遵循该时钟所表示的时间。
调度器可以让你规定 Observable 在什么样的执行上下文中发送通知给它的观察者。

静态创建操作符通常可以接收调度器作为参数。
使用 subscribeOn 来调度 subscribe() 调用在什么样的上下文中执行。
使用 observeOn 来调度发送通知的的上下文。
实例操作符可能会接收调度器作为参数。

你可能感兴趣的:(Rxjs 函数式编程 响应式编程 观察者模式 推送体系 惰性)