rxjs常用操作符列表

根据功能划分,操作符可以分为以下几类

  • 创建类
  • 转化类
  • 过滤类
  • 合并类
  • 多播类
  • 错误处理类
  • 辅助工具类
  • 条件分支类
  • 数学和合计类

创建类

操作符 功能
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 拥有默认数据的多播