运算符是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
创建运算符
以下是我们将在“创建”运算符类别中讨论的运算符:
序号 | 运算符和说明 |
---|---|
1 | ajax 该运算符将针对给定的URL发出ajax请求。 |
2 | from 此运算符将根据数组,类似数组的对象,promise,可迭代对象或类似可观察对象的对象创建可观察对象。 |
3 | fromEvent 此运算符将提供可观察到的输出,该输出将用于发出事件的元素(例如按钮,单击等)上。 |
4 | fromEventPattern 该运算符将从用于注册事件处理程序的输入函数创建一个可观察对象。 |
5 | 间隔 – interval 该运算符将在给定的时间内每次创建一个Observable。 |
6 | of 该运算符将接受传递的参数,并将其转换为可观察的。 |
7 | 范围 – range 该运算符将创建一个Observable,将根据提供的范围为您提供一系列数字。 |
8 | throwError 该运算符将创建一个可观察的对象,该对象将通知错误。 |
9 | timer 该运算符将创建一个可观察对象,该对象将在超时后发出该值,并且该值将在每次调用后保持递增。 |
10 | iif 该运算符将决定要订阅哪个Observable。 |
数学运算符
以下是我们将在“数学运算符”类别中讨论的运算符-
序号 | 运算符和说明 |
---|---|
1 | count count()运算符接收带有值的Observable并将其转换为将提供单个值的Observable |
2 | Max Max方法将采用所有值的可观察值,并返回具有最大值的可观察值 |
3 | Min Min方法将采用所有值的可观察值,并返回具有min值的可观察值。 |
4 | Reduce 在reduce运算符中,累加器函数用于可观察的输入,并且累加器函数将以可观察的形式返回累加值,并将可选的种子值传递给累加器函数。reduce()函数将接受2个参数,一个是累加器函数,第二个是种子值。 |
联接运算符
以下是我们将在“联接”运算符类别中讨论的运算符。
序号 | 运算符和说明 |
---|---|
1 | concat 该运算符将顺序地发出给定的Observable作为输入,然后进行下一个。 |
2 | forkJoin 该运算符将作为数组或dict对象的输入,并等待可观察对象完成并返回从给定可观察对象发出的最后一个值。 |
3 | merge 该运算符将输入可观察的输入,并将发出可观察的所有值,并发出一个可观察的输出。 |
4 | race 它将返回一个可观察到的对象,该对象将是第一个可观察到的源的镜像副本。 |
转型运营商
以下是我们将在“转换”运算符类别中讨论的运算符。
序号 | 运算符和说明 |
---|---|
1 | buffer 缓冲区对可观察对象进行操作,并将参数作为可观察对象。它将开始对数组中其原始可观察对象发出的值进行缓冲,并在将可观察对象用作参数时发出相同的值。一旦观察到的可观察值作为参数发出,缓冲区将重置并重新开始对原始缓冲区进行缓冲,直到输入的可观察物发出并重复相同的场景为止。 |
2 | bufferCount 对于buffercount()运算符,它将从调用它的可观察对象收集值,并在为buffercount提供的缓冲区大小匹配时发出相同的值。 |
3 | bufferTime 这类似于bufferCount,因此在这里,它将从调用它的可观察对象中收集值,并发出bufferTimeSpan完成。它接受1个参数,即bufferTimeSpan。 |
4 | bufferToggle 在bufferToggle()的情况下,它需要两个参数,openings和CloseingSelector。打开参数是可预订的,或者是保证启动缓冲区的承诺,第二个参数CloseingSelector也是可预订的,或者是承诺指标,以关闭缓冲区并发出收集的值。 |
5 | bufferWhen 该运算符将以数组形式给出值,它将一个参数作为函数来决定何时关闭,发出和重置缓冲区。 |
6 | expand expand运算符接受一个函数作为参数,该函数以递归方式应用于源可观察的对象,也应用于输出可观察的对象。最终值是可观察的。 |
7 | groupBy 在groupBy运算符中,根据特定条件对输出进行分组,并且将这些分组项作为GroupedObservable发出。 |
8 | map 对于map运算符,将项目函数应用于源Observable上的每个值,并将相同的输出作为Observable发出。 |
9 | mapTo 每当源Observable发出值时,就将常量值与Observable一起输出。 |
10 | mergeMap 对于mergeMap运算符,将项目函数应用于每个源值,并将其输出与输出Observable合并。 |
11 | switchMap 对于switchMap运算符,将对每个源值应用一个项目函数,并将其输出与输出Observable合并,并且给定的值是最近投影的Observable。 |
12 | window 它接受一个可观察到的参数windowboundaries,并在给定windowboundaries发出时返回一个嵌套的observable。 |
过滤运算符
以下是我们将在过滤运算符类别中讨论的运算符。
序号 | 运算符和说明 |
---|---|
1 | debounce 一段时间后从源Observable发出的值,并且该发出的值由给出为Observable或promise的另一个输入确定。 |
2 | debounceTime 只有在时间完成后,它才会从可观察的源发出值。 |
3 | distinct 与先前的值相比,此运算符将提供可观察到的来自源的所有值。 |
4 | elementAt 该运算符将根据给定的索引从源可观察到的值中提供一个值。 |
5 | filter 该运算符将根据给定的谓词函数从源Observable过滤值。 |
6 | first 该运算符将给出源Observable发出的第一个值。 |
7 | last 该运算符将给出源Observable发出的最后一个值。 |
8 | ignoreElements 该运算符将忽略源Observable中的所有值,仅执行对完成或错误回调函数的调用。 |
9 | sample 此运算符将从源Observable给出最新值,并且输出将取决于传递给它的参数发出。 |
10 | skip 该运算符将返回一个可观察值,它将跳过首次出现的作为输入的计数项目。 |
11 | throttle 在由输入函数确定为参数的时间内,此运算符将在可观察到的源中输出和忽略值,并将重复相同的过程。 |
公用程序运算符
以下是我们将在公用程序运算符类别中讨论的运算符。
序号 | 运算符和说明 |
---|---|
1个 | tap 此运算符将具有与可观察到的源相同的输出,并且可用于将值从可观察到的日志记录到用户。主值,错误(如果有)或任务已完成。 |
2 | delay 该运算符根据给定的超时延迟从源Observable发出的值。 |
3 | delayWhen 该运算符基于另一个观测值作为输入的超时,延迟从源Observable发出的值。 |
4 | observeOn 基于输入调度程序的该运算符将重新发送来自源Observable的通知。 |
5 | SubscribeOn 此运算符有助于根据作为输入的调度程序异步预订源Observable。 |
6 | timeInterval 该运算符将返回一个对象,该对象包含当前值以及使用当前调度程序输入所计算出的当前值与先前值之间的时间间隔。 |
7 | timestamp 返回时间戳以及从源Observable发出的值,该值说明发出该值的时间。 |
8 | timeout 如果源Observable在给定的超时后未发出值,则此运算符将引发错误。 |
9 | toArray 累积来自Observable的所有源值,并在源完成时将它们输出为数组。 |
条件运算符
以下是我们将在条件运算符类别中讨论的运算符。
序号 | 运算符和说明 |
---|---|
1 | defaultIfEmpty 如果源可观察项为空,则此运算符将返回默认值。 |
2 | every 它将基于输入函数返回一个Observable,该输入函数满足源Observable上每个值的条件。 |
3 | find 当源Observable的第一个值满足作为输入的谓词函数的条件时,将返回observable。 |
4 | findIndex 基于输入调度程序的该运算符将重新发送来自源Observable的通知。 |
5 | isEmpty 如果输入observable进行完整的回调而不发出任何值,则此运算符将输出为true;如果输入observable发出任何值,则该运算符将为false。 |
Multicasting运算符
以下是我们将在Multicasting运算符类别中讨论的运算符。
序号 | 运算符和说明 |
---|---|
1 | multicast Multicasting运算符与其他订阅者共享创建的单个订阅。Multicast接受的参数是返回具有connect()方法的ConnectableObservable的主题或工厂方法。要订阅,必须调用connect()方法。 |
2 | publish 该运算符返回ConnectableObservable,并且需要使用connect()方法订阅可观察对象。 |
3 | publishBehavior publishBehaviour使用BehaviourSubject,并返回ConnectableObservable。connect()方法必须用于订阅创建的可观察对象。 |
4 | publishLast publishBehaviour使用AsyncSubject,并返回ConnectableObservable。connect()方法必须用于订阅创建的可观察对象。 |
5 | publishRepla publishReplay利用行为主题,其中它可以缓冲值并将其重放给新的订户,并返回ConnectableObservable。connect()方法必须用于订阅创建的可观察对象。 |
6 | share 它是mutlicast()运算符的别名,唯一的区别是您不必手动调用connect()方法来启动订阅。 |
错误处理运算符
以下是我们将在错误处理运算符类别中讨论的运算符。
序号 | 运算符和说明 |
---|---|
1 | catchError 该运算符负责通过返回新的Observable或错误来在源Observable上捕获错误。 |
2 | retry 如果有错误,此运算符将尝试在源Observable上重试,并且将根据给定的输入计数进行重试。 |
作者:terry,如若转载,请注明出处:https://www.web176.com/rxjs/1774.html