RxJS - 运算符


运算符是 RxJS 的重要组成部分。运算符是一个纯函数,它将 observable 作为输入,输出也是一个 observable。

与运营商合作

运算符是一个纯函数,它接受可观察值作为输入,输出也是一个可观察值。

为了使用运算符,我们需要一个 pipeline() 方法。

使用 Pipe() 的示例

let obs = of(1,2,3); // an observable
obs.pipe(
   operator1(),
   operator2(),
   operator3(),
   operator3(),
)

在上面的示例中,我们使用of()方法创建了一个可观察对象,该方法接受值 1、2 和 3。现在,在这个可观察对象上,您可以使用任意数量的运算符使用 pipeline() 方法执行不同的操作,如上所示。运算符的执行将在给定的可观察量上按顺序进行。

下面是一个工作示例 -

import { of } from 'rxjs';
import { map, reduce, filter } from 'rxjs/operators';

let test1 = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
let case1 = test1.pipe(
   filter(x => x % 2 === 0),
   reduce((acc, one) => acc + one, 0)
)
case1.subscribe(x => console.log(x));

输出

30

在上面的示例中,我们使用了过滤运算符来过滤偶数,接下来我们使用了reduce()运算符来添加偶数值并在订阅时给出结果。

这是我们将要讨论的可观察量列表。

  • 创建
  • 数学
  • 加入
  • 转型
  • 过滤
  • 公用事业
  • 有条件的
  • 组播
  • 错误处理

创建操作符

以下是我们将在创建运算符类别中讨论的运算符 -

先生编号 运算符及描述
1 AJAX

该操作符将对给定的 URL 发出 ajax 请求。

2

该运算符将从数组、类数组对象、promise、可迭代对象或类可观察对象创建可观察对象。

3 来自事件

该运算符将输出作为可观察量,用于发出事件的元素,例如按钮、单击等。

4 来自事件模式

该运算符将从输入函数创建一个可观察对象,用于注册事件处理程序。

5 间隔

该运算符将为给定时间的每次创建一个 Observable。

6

该运算符将接收传递的参数并将它们转换为可观察的。

7 范围

该运算符将创建一个 Observable,它将根据提供的范围为您提​​供一系列数字。

8 抛出错误

该运算符将创建一个通知错误的可观察对象。

9 计时器

该运算符将创建一个可观察量,该可观察量将在超时后发出值,并且该值将在每次调用后不断增加。

10 投资基金

该操作员将决定订阅哪个 Observable。

数学运算符

以下是我们将在数学运算符类别中讨论的运算符 -

先生编号 运算符及描述
1 数数

count() 运算符接收带有值的 Observable 并将其转换为给出单个值的 Observable

2 最大限度

Max 方法将接受具有所有值的可观察量并返回具有最大值的可观察量

3 最小

Min 方法将接受具有所有值的可观察量并返回具有最小值的可观察量。

4 减少

在reduce运算符中,累加器函数用于输入可观察量,累加器函数将以可观察量的形式返回累加值,并将可选的种子值传递给累加器函数。

reduce() 函数将接受 2 个参数,第一个是累加器函数,第二个是种子值。

加入运营商

以下是我们将在连接运算符类别中讨论的运算符。

先生编号 运算符及描述
1 连接

该运算符将按顺序发出作为输入给出的 Observable,并继续处理下一个。

2 分叉连接

该运算符将在数组或字典对象中作为输入,并等待可观察对象完成并返回从给定可观察对象发出的最后一个值。

3 合并

该运算符将接收输入可观察值,并发出可观察值中的所有值,并发出一个输出可观察值。

4 种族

它将返回一个可观察量,该可观察量将是第一个源可观察量的镜像副本。

转换算子

以下是我们将在转换运算符类别中讨论的运算符。

先生编号 运算符及描述
1 缓冲

缓冲区对可观察量进行操作并接收参数作为可观察量。它将开始缓冲数组中原始可观察量发出的值,并且当可观察量作为参数发出时,将发出相同的值。一旦作为参数的可观察量发出,缓冲区就会重置并在原始数据上再次开始缓冲,直到输入可观察量发出并且重复相同的场景。

2 缓冲区计数

对于 buffercount() 运算符,它将从调用它的可观察对象中收集值,并在给定 buffercount 的缓冲区大小匹配时发出相同的值。

3 缓冲时间

这与 bufferCount 类似,因此在这里,它将从调用它的可观察对象中收集值并发出 bufferTimeSpan 已完成。它接受 1 个参数,即bufferTimeSpan

4 缓冲区切换

对于 bufferToggle(),它需要 2 个参数,即 openings 和 openingSelector。开始参数是可订阅的或承诺启动缓冲区,第二个参数 openingSelector 也是可订阅的或承诺一个指示符来关闭缓冲区并发出收集的值。

5 缓冲时间

该运算符将以数组形式给出值,它接受一个参数作为函数,决定何时关闭、发出和重置缓冲区。

6 扩张

扩展运算符接受一个函数作为参数,该参数递归地应用于源可观察量以及输出可观察量。最终值是可观察的。

7 通过...分组

在 groupBy 运算符中,输出根据特定条件进行分组,并且这些组项作为 GroupedObservable 发出。

8 地图

对于映射运算符,项目函数应用于源 Observable 上的每个值,并且相同的输出作为 Observable 发出。

9 映射到

每当源 Observable 发出一个值时,都会与 Observable 一起给出一个常量值作为输出。

10 合并映射

对于 mergeMap 运算符,项目函数应用于每个源值,并将其输出与输出 Observable 合并。

11 切换映射

对于 switchMap 运算符,项目函数应用于每个源值,并将其输出与输出 Observable 合并,给出的值是最近投影的 Observable。

12 窗户

它接受一个参数 windowboundaries,它是一个可观察的,并在给定的 windowboundaries 发出时返回一个嵌套的可观察

过滤运算符

以下是我们将在过滤运算符类别中讨论的运算符。

先生编号 运算符及描述
1 去抖

一段时间后从源 Observable 发射的值,发射由作为 Observable 或 Promise 给出的另一个输入确定。

2 去抖时间

仅在时间结束后,它才会从可观察源发出值。

3 清楚的

该运算符将给出源可观察值中与前一个值相比不同的所有值。

4 元素At

该运算符将根据给定的索引给出源可观察值的单个值。

5 筛选

该运算符将根据给定的谓词函数过滤源 Observable 中的值。

6 第一的

该运算符将给出源 Observable 发出的第一个值。

7 最后的

该运算符将给出源 Observable 发出的最后一个值。

8 忽略元素

该运算符将忽略源 Observable 中的所有值,仅执行对完成或错误回调函数的调用。

9 样本

该运算符将给出来自源 Observable 的最新值,并且输出将取决于传递给它的参数发出。

10 跳过

该运算符将返回一个可观察值,该可观察值将跳过作为输入的计数项的第一次出现。

11 风门

该运算符将在由作为参数的输入函数确定的时间内输出并忽略源可观察值中的值,并且将重复相同的过程。

公用事业运营商

以下是我们将在实用运算符类别中讨论的运算符。

先生编号 运算符及描述
1 轻敲

该运算符将具有与源可观察值相同的输出,并且可用于将可观察值中的值记录给用户。主要值、错误(如果有)或任务是否完成。

2 延迟

该运算符根据给定的超时延迟从源 Observable 发出的值。

3 延迟时间

该运算符根据作为输入的另一个可观察量的超时延迟从源可观察量发出的值。

4 观察

这个基于输入调度器的操作符将从源 Observable 重新发出通知。

5 订阅

该运算符有助于根据作为输入的调度程序异步订阅源 Observable。

6 时间间隔

该运算符将返回一个对象,其中包含当前值以及使用调度程序输入计算出的当前值与上一个值之间经过的时间。

7 时间戳

返回时间戳以及从源 Observable 发出的值,该值说明了发出值的时间。

8 暂停

如果源 Observable 在给定超时后未发出值,则该运算符将抛出错误。

9 到数组

累积来自 Observable 的所有源值,并在源完成时将它们作为数组输出。

条件运算符

以下是我们将在条件运算符类别中讨论的运算符。

先生编号 运算符及描述
1 默认为空

如果源可观察量为空,则该运算符将返回默认值。

2 每一个

它将根据输入函数满足源 Observable 上每个值的条件返回一个 Observable。

3 寻找

当源 Observable 的第一个值满足作为输入的谓词函数的条件时,这将返回 observable。

4 查找索引

这个基于输入调度器的操作符将从源 Observable 重新发出通知。

5 是空的

如果输入可观察量进行完整回调而不发出任何值,则该运算符将输出 true,如果输入可观察量发出任何值,则输出为 false。

组播运营商

以下是我们将在多播运算符类别中讨论的运算符。

先生编号 运算符及描述
1 组播

多播运营商与其他订阅者共享创建的单个订阅。多播接受的参数是一个主题或一个返回具有 connect() 方法的 ConnectableObservable 的工厂方法。要订阅,必须调用 connect() 方法。

2 发布

该运算符返回 ConnectableObservable,并且需要使用 connect() 方法来订阅 observable。

3 发布Behave

publishBehaviour利用BehaviourSubject,并返回ConnectableObservable。必须使用 connect() 方法来订阅创建的可观察对象。

4 发布最后

publishBehaviour 使用 AsyncSubject,并返回 ConnectableObservable。必须使用 connect() 方法来订阅创建的可观察对象。

5 发布重播

publishReplay 利用Behave主体,其中它可以缓冲值并将其重播给新订阅者并返回 ConnectableObservable。必须使用 connect() 方法来订阅创建的可观察对象。

6 分享

它是 mutlicast() 运算符的别名,唯一的区别是您不必手动调用 connect() 方法来启动订阅。

错误处理运算符

以下是我们将在错误处理运算符类别中讨论的运算符。

先生编号 运算符及描述
1 捕获错误

该运算符负责通过返回新的 Observable 或错误来捕获源 Observable 上的错误。

2 重试

如果出现错误,该运算符将负责重试源 Observable,并且重试将根据给定的输入计数完成。