根据功能划分,操作符可以分为以下几类
- 创建类
- 转化类
- 过滤类
- 合并类
- 多播类
- 错误处理类
- 辅助工具类
- 条件分支类
- 数学和合计类
创建类
| 操作符 | 功能 |
|---|---|
| create | 直接创建观察者 |
| of | 产生同步的数据流 |
| range | 产生一个数值范围内的数据流 |
| generate | 以循环方式产生数据 |
| repeat和repeatWhen | 重复的产生数据 |
| empty | 产生空数据 |
| throw | 产生直接出错的数据 |
| nerver | 永不完结的数据 |
| interval 和 timer | 间隔给定时间持续产生数据 |
| from | 从数组等枚举类型产生数据 |
| fromPromise | 从promise对象产生数据 |
| fromEvent 和 fromEventPattern | 从外部事件产生数据 |
| ajax | 从ajax 产生数据 |
| defer | 延迟产生数据 |
合并类
注意:名字中含有all的都是处理高阶数据流的
| 操作符 | 功能 |
|---|---|
| concat 和 concatAll | 把多个数据流以首尾方式合并 |
| merge 和 mergeAll | 把多个数据流以先到先得的方式合并 |
| zip 和 zipAll | 把多个数据流以一一对应方式合并 |
| combineLatest、combineAll 和 withLatestFrom | 持续合并多个数据流最新的数据 |
| race | 从多个数据流中选取第一个产生的数据流 |
| startWith | 在数据流前面添加一个指定数据 |
| forkJoin | 只获取多个数据流最后产生的那个数据 |
| switch 和 exhaust | 从高阶数据流中切换数据 |
辅助类
| 操作符 | 功能 |
|---|---|
| count | 统计数据流中产生的所有数据的个数 |
| max 和 min | 统计数据流中最大的和最小的数据 |
| reduce | 和数据中的reduce操作类似 |
| every | 判断是否所有数据满足某个条件 |
| isEmpty | 判断一个数据流是否为空 |
| defaultEmpty | 如果一个数据流为空就默认产生一个指定数据 |
过滤类
| 操作符 | 功能 |
|---|---|
| filter | 过滤掉不满足条件的数据 |
| first | 获取满足判定的第一个数据 |
| last | 获取满足判定的最后一个数据 |
| take | 从数据源中选取最先出现的若干数据 |
| takeLast | 从数据源中选取最后出现的若干数据 |
| takeWhile 和 takeUntil | 从数据源中选取若干数据直到某种情况发生 |
| skip | 忽略最先出现的若干数据 |
| skipWhile 和 skipUntil | 从数据流中忽略数据直到满足某种条件 |
| throttleTime、debounceTime 和 auditTIme | 基于时间的数据流量筛选 |
| throttle、debounce 和 audit | 基于数据内容的筛选 |
| distnct | 删除重复数据 |
| distnctUntilChanged 和 distnctUntilKeyChanged | 删除重复的连续数据 |
| ignoreElements | 忽略数据流中所有数据 |
| elementAt | 获取指定位置出现的数据 |
| single | 判断是否只有一个数据满足条件 |
转化类
| 操作符 | 功能 |
|---|---|
| map | 映射每个数据,和数组的map类似 |
| mapTo | 将所有数据映射为同一个数据 |
| pluck | 提取数据流中每个数据的某个字段 |
| windowTime、windowCount、windowWhen、windowToggle和window | 产生高阶Observable对象 |
| bufferTime,bufferCount、bufferWhen、bufferToggle和buffer | 产生数组构成的数据流 |
| concatMap、mergeMap、switchMap、exhaustMap | 映射产生高阶Observable对象然后合并 |
| scan 和 scanMerge | 产生规约运算结果的数据流 |
异常处理
| 操作符 | 功能 |
|---|---|
| catch | 捕获上游产生的error |
| retry 和 retryWhen | 当上游产生错误时,尝试重试 |
| finally | 无论是否出错都要进行的一些操作 |
多播
| 操作符 | 功能 |
|---|---|
| multicast | 灵活选取subject对象进行多播 |
| publishLast | 只多播数据流中最后一个数据 |
| publishReplay | 对数据流中给定的数量进行多播 |
| publishBehavior | 拥有默认数据的多播 |