RxJS学习笔记(五)辅助类操作符 #72
zhangyu1818
announced in
zh-cn
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
辅助类操作符在
RxJS中是比较特殊的操作符数学类操作符
数学类操作符在
RxJS中只有4个,分别是countmaxminreduce它们的特点是,会遍历上游
Observable对象中吐出的所有数据,换句话说,就是当上游数据完结时,才会给下游传递数据count
count操作符的作用是计算上游吐出的数据个数如果上游不是立刻完结的
由于数学类操作符会等待上游完结,所以等待5秒后,上游吐出数据,才会计算
countmin和max
min和max操作符的用法是相同的,所以仅以max操作符举例max操作符对于数字以数字大小比较,对于字符串使用ASICII码比较除了默认的比较方式,还可以接收自定义的
comparer函数来比较复杂值reduce
reduce操作符和javascipt原生的reduce函数是一样的,只不过吐出的结果是Observable对象reduce接收两个参数,第一个参数是规约函数,第二个参数是种子值规约函数接收两个参数,第一个参数是上次累积的值,第二个参数是当前的值,函数需要返回一个当前累积值给下一次计算使用
种子值也就是初始值,是可选的,默认会使用数据集合中的第一个值作为初始值,这样会跳过第一个值的计算,将第一个值作为
acc参数传给第二次累积计算reduce计算平均值
条件布尔类操作符
条件布尔类操作符会根据上游
Observable对象的数据和判定条件产生一个新的Observable对象,在
RxJS中有5种布尔类操作符everyfindfindIndexisEmptydefaultEmpty其中
every、find、findIndex操作符都接受一个函数参数这个函数被称为判定函数,判定函数就是判定输入是否满足某个条件
判定函数又接收3个参数,第一个参数是当前的值,第二个参数是索引,第三个值是
Observable数据源every
every操作符和数组中的every相似,如果数据集合中的每一个值的判定结果都是true,every操作符就会吐出true,如果有一个值不满足条件,那every操作符会立即吐出false并且不会对之后的值进行验证因为第一个数据
1不满足条件,所以会立刻吐出falsefind和findIndex
find和findIndex操作符功能也和数组的方法相同,不同的是find返回的是通过的值,findIndex是返回的当前的值的索引find会返回undefined,而findIndex会返回-1isEmpty
isEmpty操作符的作用就如其名,判定上游的Observable对象是否没有吐出数据就直接complete了defaultEmpty
defaultEmpty操作符接收一个可选参数,这个参数是上游为empty时吐出的默认值defaultEmpty操作符和isEmpty相同的地方在它们都会在上游Observable对象为空的时候吐出数据,不同的是isEmpty吐出的是布尔值,而defaultEmpty会吐出一个默认值需要注意的一点是,如果没有给
defaultEmpty传参,它会吐出一个null而不是undefined话说有一个疑问,既然有
every操作符,为什么没有some呢?Beta Was this translation helpful? Give feedback.
All reactions