RxJS:运算符

运算符是RxJS的重要组成部分。运算符是一个纯函数,它以可观察值作为输入,而输出也是可观察的。

运算符

运算符是一个纯函数,它以可观察的输入作为输入,而输出也是可观察的。

要与运算符一起使用,我们需要一个pipe()方法。

使用pipe()的示例

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

在上面的示例中,我们创建了一个可观察的using ()方法,其值分别为1、2和3。现在,在该可观察对象上,您可以使用如上所述的pipe()方法使用任意数量的运算符执行不同的操作。运算符的执行将按可观察到的顺序继续进行。

以下是一个工作示例:

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

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

这是我们将要讨论的Observable的列表。

  • Creation
  • Mathematical
  • Join
  • Transformation
  • Filtering
  • Utility
  • Conditional
  • Multicasting
  • Error handling

创建运算符

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

序号运算符和说明
1ajax
该运算符将针对给定的URL发出ajax请求。
2from
此运算符将根据数组,类似数组的对象,promise,可迭代对象或类似可观察对象的对象创建可观察对象。
3fromEvent
此运算符将提供可观察到的输出,该输出将用于发出事件的元素(例如按钮,单击等)上。
4fromEventPattern
该运算符将从用于注册事件处理程序的输入函数创建一个可观察对象。
5间隔 – interval
该运算符将在给定的时间内每次创建一个Observable。
6of
该运算符将接受传递的参数,并将其转换为可观察的。
7范围 – range
该运算符将创建一个Observable,将根据提供的范围为您提​​供一系列数字。
8throwError
该运算符将创建一个可观察的对象,该对象将通知错误。
9timer
该运算符将创建一个可观察对象,该对象将在超时后发出该值,并且该值将在每次调用后保持递增。
10iif
该运算符将决定要订阅哪个Observable。

数学运算符

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

序号运算符和说明
1count
count()运算符接收带有值的Observable并将其转换为将提供单个值的Observable
2Max
Max方法将采用所有值的可观察值,并返回具有最大值的可观察值
3Min
Min方法将采用所有值的可观察值,并返回具有min值的可观察值。
4Reduce
在reduce运算符中,累加器函数用于可观察的输入,并且累加器函数将以可观察的形式返回累加值,并将可选的种子值传递给累加器函数。reduce()函数将接受2个参数,一个是累加器函数,第二个是种子值。

联接运算符

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

序号运算符和说明
1concat
该运算符将顺序地发出给定的Observable作为输入,然后进行下一个。
2forkJoin
该运算符将作为数组或dict对象的输入,并等待可观察对象完成并返回从给定可观察对象发出的最后一个值。
3merge
该运算符将输入可观察的输入,并将发出可观察的所有值,并发出一个可观察的输出。
4race
它将返回一个可观察到的对象,该对象将是第一个可观察到的源的镜像副本。

转型运营商

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

序号运算符和说明
1buffer
缓冲区对可观察对象进行操作,并将参数作为可观察对象。它将开始对数组中其原始可观察对象发出的值进行缓冲,并在将可观察对象用作参数时发出相同的值。一旦观察到的可观察值作为参数发出,缓冲区将重置并重新开始对原始缓冲区进行缓冲,直到输入的可观察物发出并重复相同的场景为止。
2bufferCount
对于buffercount()运算符,它将从调用它的可观察对象收集值,并在为buffercount提供的缓冲区大小匹配时发出相同的值。
3bufferTime
这类似于bufferCount,因此在这里,它将从调用它的可观察对象中收集值,并发出bufferTimeSpan完成。它接受1个参数,即bufferTimeSpan
4bufferToggle
在bufferToggle()的情况下,它需要两个参数,openings和CloseingSelector。打开参数是可预订的,或者是保证启动缓冲区的承诺,第二个参数CloseingSelector也是可预订的,或者是承诺指标,以关闭缓冲区并发出收集的值。
5bufferWhen
该运算符将以数组形式给出值,它将一个参数作为函数来决定何时关闭,发出和重置缓冲区。
6expand
expand运算符接受一个函数作为参数,该函数以递归方式应用于源可观察的对象,也应用于输出可观察的对象。最终值是可观察的。
7groupBy
在groupBy运算符中,根据特定条件对输出进行分组,并且将这些分组项作为GroupedObservable发出。
8map
对于map运算符,将项目函数应用于源Observable上的每个值,并将相同的输出作为Observable发出。
9mapTo
每当源Observable发出值时,就将常量值与Observable一起输出。
10mergeMap
对于mergeMap运算符,将项目函数应用于每个源值,并将其输出与输出Observable合并。
11switchMap
对于switchMap运算符,将对每个源值应用一个项目函数,并将其输出与输出Observable合并,并且给定的值是最近投影的Observable。
12window
它接受一个可观察到的参数windowboundaries,并在给定windowboundaries发出时返回一个嵌套的observable。

过滤运算符

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

序号运算符和说明
1debounce
一段时间后从源Observable发出的值,并且该发出的值由给出为Observable或promise的另一个输入确定。
2debounceTime
只有在时间完成后,它才会从可观察的源发出值。
3distinct
与先前的值相比,此运算符将提供可观察到的来自源的所有值。
4elementAt
该运算符将根据给定的索引从源可观察到的值中提供一个值。
5filter
该运算符将根据给定的谓词函数从源Observable过滤值。
6first
该运算符将给出源Observable发出的第一个值。
7last
该运算符将给出源Observable发出的最后一个值。
8ignoreElements
该运算符将忽略源Observable中的所有值,仅执行对完成或错误回调函数的调用。
9sample
此运算符将从源Observable给出最新值,并且输出将取决于传递给它的参数发出。
10skip
该运算符将返回一个可观察值,它将跳过首次出现的作为输入的计数项目。
11throttle
在由输入函数确定为参数的时间内,此运算符将在可观察到的源中输出和忽略值,并将重复相同的过程。

公用程序运算符

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

序号运算符和说明
1个tap
此运算符将具有与可观察到的源相同的输出,并且可用于将值从可观察到的日志记录到用户。主值,错误(如果有)或任务已完成。
2delay
该运算符根据给定的超时延迟从源Observable发出的值。
3delayWhen
该运算符基于另一个观测值作为输入的超时,延迟从源Observable发出的值。
4observeOn
基于输入调度程序的该运算符将重新发送来自源Observable的通知。
5SubscribeOn
此运算符有助于根据作为输入的调度程序异步预订源Observable。
6timeInterval
该运算符将返回一个对象,该对象包含当前值以及使用当前调度程序输入所计算出的当前值与先前值之间的时间间隔。
7timestamp
返回时间戳以及从源Observable发出的值,该值说明发出该值的时间。
8timeout
如果源Observable在给定的超时后未发出值,则此运算符将引发错误。
9toArray
累积来自Observable的所有源值,并在源完成时将它们输出为数组。

条件运算符

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

序号运算符和说明
1defaultIfEmpty
如果源可观察项为空,则此运算符将返回默认值。
2every
它将基于输入函数返回一个Observable,该输入函数满足源Observable上每个值的条件。
3find
当源Observable的第一个值满足作为输入的谓词函数的条件时,将返回observable。
4findIndex
基于输入调度程序的该运算符将重新发送来自源Observable的通知。
5isEmpty
如果输入observable进行完整的回调而不发出任何值,则此运算符将输出为true;如果输入observable发出任何值,则该运算符将为false。

Multicasting运算符

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

序号运算符和说明
1multicast
Multicasting运算符与其他订阅者共享创建的单个订阅。Multicast接受的参数是返回具有connect()方法的ConnectableObservable的主题或工厂方法。要订阅,必须调用connect()方法。
2publish
该运算符返回ConnectableObservable,并且需要使用connect()方法订阅可观察对象。
3publishBehavior
publishBehaviour使用BehaviourSubject,并返回ConnectableObservable。connect()方法必须用于订阅创建的可观察对象。
4publishLast
publishBehaviour使用AsyncSubject,并返回ConnectableObservable。connect()方法必须用于订阅创建的可观察对象。
5publishRepla
publishReplay利用行为主题,其中它可以缓冲值并将其重放给新的订户,并返回ConnectableObservable。connect()方法必须用于订阅创建的可观察对象。
6share
它是mutlicast()运算符的别名,唯一的区别是您不必手动调用connect()方法来启动订阅。

错误处理运算符

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

序号运算符和说明
1catchError
该运算符负责通过返回新的Observable或错误来在源Observable上捕获错误。
2retry
如果有错误,此运算符将尝试在源Observable上重试,并且将根据给定的输入计数进行重试。

作者:terry,如若转载,请注明出处:https://www.web176.com/rxjs/1774.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2021年2月9日 下午12:59
下一篇 2021年2月9日 下午1:08

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注