Open wsqww opened 3 years ago
单播:
每个普通的 Observables 实例都只能被一个观察者订阅,当它被其他观察者订阅的时候会产生一个新的实例。也就是普通 Observables 被不同的观察者订阅的时候,会有多个实例,不管观察者是从何时开始订阅,每个实例都是从头开始把值发给对应的观察者;
多播:
订阅只会接收到实时的数据的功能;Subject
冷:
只有被 observers 订阅的时候,才会开始产生值。是单播的,有多少个订阅就会生成多少个订阅实例,每个订阅都是从第一个产生的值开始接收值,所以每个订阅接收到的值都是一样的。
热:
不管有没有被订阅都会产生值。是多播的,多个订阅共享同一个实例,是从订阅开始接受到值,每个订阅接收到的值是不同的,取决于它们是从什么时候开始订阅。
待完善
mergeMap :
会立即订阅所有内部 observables,先完成的 先发出值;
switchMap :
它具有取消效果。在每次发出时,会取消前一个内部 observable (你所提供函数的结果) 的订阅,然后订阅一个新的 observable
concatMap :
将值映射成内部 observable,并按顺序订阅和发出 concatMap 之前前一个内部 observable 完成后才会订阅下一个;
BehaviorSubject是subject的变体,具有类似的多播功能。 不同的是,BehaviorSubject需要初始值,并且会在订阅时发出当前值。 Subject只是多播,不保留状态,但是我们可以使用BehaviorSubject来知道最后一个发出的值。
基本介绍
解决异步编程的应用库; 基于可观测数据流 Stream 结合观察者模式和迭代器模式实现。
在 RxJS 中用来解决异步事件管理的的基本概念是: