Operator
RxJS 中的 Operator 实际上就是函数,在 RxJS 中有两种 Operator,一种是管道操作符(Piped Operator),一种是创建操作符(Creation Operator)。
创建操作符则是用来快速创建 Observable。例如of(1, 2, 3)
。常用的创建操作符主要有以下这些。
操作符 | 执行功能 |
---|---|
ajax | 执行 Ajax 访问。 |
bindCallback | 将传统的回调 API 转换为 Observable 。 |
bindNodeCallback | 将 NodeJS 的回调 API 风格转换为 Observable 。 |
defer | 当有订阅的时候才创建 Observable 。 |
defer | 创建一个空白的 Observable 。 |
from | 以给定的对象为源创建 Observable 。 |
fromEvent | 将给定的 DOM 事件转换为 Observable 。 |
generate | 按照给定的规则生成 Observable 。 |
interval | 生成一个定时发出计数信号的 Observable 。 |
of | 将现有序列转换成 Observable 。 |
range | 创建一个会发送指定序列的 Observable 。 |
throwError | 创建一个只会抛出指定错误的 Observable 。 |
timer | 创建一个在指定延时之后发出计数信号的 Observable 。 |
iif | 创建一个根据指定条件发送信息的 Observable 。 |
combineLatest | 将两个 Observable 交叉合并在一起。 |
concat | 将两个 Observable 交叉合并在一起。 |
forkJoin | 将所有 Observable 的最终值合并在一起。 |
forkJoin | 将所有 Observable 合并。 |
race | 从多个 Observable 中选择第一个被发送的值。 |
race | 组合多个 Observable 发送的值合并成键值对。 |
对于可以合并多个 Observable
的方法,需要参考 RxJS 的文档来根据示意图选择使用。
管道操作符主要用于在.pipe()
方法中对 Observable
发出的数据进行变换。例如。
observable.pipe(
filter(x => x % 2 !== 0),
map(x => x * 2)
);
以下列举一些常用的管道操作符。
操作符 | 执行功能 |
---|---|
buffer(notifier) | 缓存直到notifier 发送一个值作为信号。 |
bufferTime(time) | 缓存一段时间内发送的值。 |
bufferWhen(obsesrvable) | 缓存数据直到另一个 Observable 发送信号。 |
concatMap() | 合并两个 Observable 并同时进行变换。 |
expand() | 根据另一个 Observable 进行扩展。 |
groupBy() | 将 Observable 发送的值进行分组。 |
map() | 对 Observable 发送的值进行变换。 |
mergeMap() | 合并两个 Observable 的同时进行变换。 |
partition() | 按照条件将 Observable 分散成多个 Observable 。 |
partition() | 从发送的值中取得键值相近的值。 |
partition() | 对发送的值进行迭代计算,立刻返回结果。 |
switchMap() | 合并两个 Observable 并同时进行变换。 |
window() | 根据另一个 Observable 的发送进行分组。 |
debounce() | 延迟一段时间进行发送。 |
distinct() | 对发送的值进行去重。 |
elementAt() | 选择指定索引的值。 |
filter() | 选择符合条件的值。 |
first() | 选择第一个值。 |
last() | 选择最后一个值。 |
sample() | 根据另一个 Observable 的发送进行采样。 |
skip() | 丢弃指定数量的值。 |
take() | 只取指定数量的值。 |
throttle() | 间隔一段时间进行发送。 |
combineAll() | 组合 Observable 。 |
concatAll() | 展平并连接 Observable 。 |
mergeAll() | 按照发送顺序展平合并。 |
startWith() | 将指定值添加到起始发送位置。 |
multicast() | 返回多个 ConnectableObservable 供群发。 |
publish() | 返回一个 ConnectableObservable 供自由连接。 |
catchError() | 捕获错误并重新发送其他 Observable 。 |
retry() | 重新请求发送。 |
retry() | 附加一个副作用处理过程。 |
every() | 确定所有值是否满足条件。 |
find() | 选择符合条件的值。 |
count() | 发送值的总个数。 |
max() | 发送值的最大值。 |
min() | 发送值的最小值。 |
reduce() | 对发送的值进行迭代计算,最后返回结果。 |