碎碎念:知识点梳理归纳,如果有什么不对的感谢大家指正一起学习!
- 版本为6
- ① startWith
- ② throttle
- ③ throttleTime
① startWith
- 返回的 Observable 会先发出作为参数指定的项,然后再发出由源 Observable 所发出的项
- 发出给定的第一个值
- 实例操作符
例:在源Observable发出值之前插入一个“

例 2: startWith 用作 scan 的初始值

解析:以
例3: 利用

② throttle
- 从源 Observable 中发出一个值,然后在由另一个 Observable 决定的期间内忽略随后发出的源值,然后重复此过程
- 它很像 throttleTime,但是沉默持续时间是由 第二个 Observable 决定的
- 函数签名: throttle(durationSelector: function(value): Observable | Promise): Observable
工作方式: throttle每次往下游传递一个数据,就关上了上下游之间的阀门,当durationSelector产生数据的时候才会打开这个阀门。这个时候如果有新数据产生,被传递给下游,同时关上阀门。throttle会退订上一次durationSelector返回的Observable对象,重新用**‘新数据’**作为参数来调用durationSelector来获得一个新的Observable对象,新的Observable对象产生数据的时候,阀门才会再次打开
弹珠图:

例1:节流4秒,时间由第二个Observable决定的
节流前:

节流后:

解析:在源产生第一个数据0的时候,用0最为参数调用durationSelector,订阅durationSelector返回的Observable对象,在这个Observable对象产生第一个对象之前,所有上游传过来的数据都会被抛弃,所以1,2,3,4被丢弃了,因为durationSelector返回的Observable对象被订阅之后4s后才会产生数据
例2:

③ throttleTime
- 从源 Observable 中发出一个值,然后在 duration 毫秒内忽略随后发出的源值, 然后重复此过程
- 让第一个值通过,之后发射的频率受duration影响,每次发射之后的duration时间之内不会发射出来新的数据
弹珠图:

例1:节流2s,每2s发出一个值

相关链接:
throttleTime