操作符是一个作用于一个可观测对象的函数,它产生一个新的可观测对象。在此过程中,原始的可观测值没有发生突变,而是一个纯函数。操作符不改变可观察对象的事实是rx编程模型中声明式调度工作的原因之一。Rx运算符可以分为以下几类:
- 创建运算符
- 转换运算符
- 过滤运算符
- 组合运算符
- 错误处理运算符
- 实用运算符
- 布尔运算符
- 数学运算符
有一些可用的操作符不属于这些类别。我们将在一个表中列出前面类别中的一些关键操作符,以供快速参考
创建型操作符
这些操作符将帮助您从输入数据创建各种可观察的对象。请参考rxcpp文档以了解更多关于它们的信息。包含以下一些运算符的表:
操作符 | 描述 |
---|---|
create | 通过编程调用Observer方法创建一个可观察对象 |
defer | 直到有观察者订阅时才创建Observable,并且为每个观察者创建一个新的Observable |
empty | 创建一个不发射任何数据但是正常终止的Observable |
from | 将其它种类的对象和数据类型转换为Observable |
interval | 创建一个按固定时间间隔发射整数序列的Observable |
just | 创建一个发出单个值的可观察对象 |
range | 创建一个发射特定整数序列的Observable |
never | 创建一个不发射数据也不终止的Observable |
repeat | 创建一个发射特定数据重复多次的Observable |
timer | 创建一个Observable,它在一个给定的延迟后发射一个特殊的值。 |
throw | 创建一个不发射数据以一个错误终止的Observable |
转换运算符
这些操作符帮助创建一个新的可观察对象而不修改源可观察对象。它们作用于源中可观察到的单个项,方法是对它们应用lambda。
操作符 | 描述 |
---|---|
buffer | 定期收集Observable的数据放进一个数据包裹,然后发射这些数据包裹,而不是一次发射一个值。 |
flat_map | 将一个发射数据的Observable变换为多个Observables,然后将它们发射的数据合并后放进一个单独的Observable |
group_by | Observable that helps to group values from an Observable |
map | Observable that emits the items from the source Observable, transformed by the specified function |
scan | Observable that emits the results of each call to the accumulator function |
window | Observable that emits connected, non-overlapping windows, each containing, at most, count items from the source Observable |