RxJS学习笔记(六)过滤类操作符 #73
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
-
过滤首先肯定会想到数组的方法
filter
,在RxJS
中也有相同的方法,大部分过滤类操作符都会接受一个回调函数,如果这个函数的结果返回true
就可以保留,否则就会被过滤掉,那么就从最名副其实的filter
操作符开始filter
过滤1-20之间的奇数
filter
操作符只能过滤数据take
take
操作符接收一个参数,代表从上游Observable
取多少个数据在从永不完结的
interval
操作符取了2个数据后,输出complete
,完结takeLast
takeLast
操作符就是从吐出的数据集合最后开始取与
take
不同的一点就是,take
无需等待上游Observable
对象完结,在获取对应的个数后会退订上游,而takeLast
对象因为从最后开始取,所以必须等待上游完结,如果上游永不完结,那么takeLast
就永远不会吐出数据takeWhile
take
和takeLast
操作符都是获取指定的数量,如果想要动态的判定个数,就做不到了takeWhile
弥补了这一点,它接受一个判定函数作为参数上例在
clientX > 200
时持续输出,但是如果将鼠标移入200
以内,就不再输出了takeUntil
takeUntil
操作符接收一个定义为notifier
的Observable
对象,它会一直取上游的数据,直到notifier
吐出一个值比如只取2秒的数据
到第五秒到时候本应吐出
4
,但是这时候timer(5000)
吐出了数据,所以取数结束skip
和
take
操作符恰恰相反,skip
操作符的作用是忽略掉一定的数据只吐出了3、4、5,忽略掉了2个也就是1、2
skipWhile
也是与
takeWhile
相反上面的例子在
clientX > 200
的时候不会吐出数据,在clientX < 200
的时候吐出了数据,但是和takeWhile
不同的是,takeWhile
一旦不满足clientX > 200
这个条件,就不会再吐出数据,而skipWhile
在判定clientX < 200
后开始吐出数据,这时候再将鼠标移入clientX > 200
的区域,不会有任何效果了skipUntil
忽略2秒的数据
first
first
操作符和find
操作符很像,但它可以不传参使用不穿参数默认返回上游
Observable
对象吐出的第一个数据,如果给first
传入一个判定函数,则和find
操作符十分相似了不过,
first
在没找到数据时,返回值和find
大不相同,find
操作符会返回一个undefined
,而first
操作符则直接回抛出一个EmptyError
错误,好在filter
还接受第二个参数,作为默认值,而不会抛出错误在
RxJS v5
中,first
操作符还可以接收一个处理函数,比如可以同时返回值和索引,但是在RxJS v6
中移除掉了last
last
操作符和first
操作符刚好相反,取的是通过判定函数的最后一个值同样也接收一个判定函数
结果是8而不是2、4、6,可以看出确实是最后一个满足的值
同样接收一个默认值
今天看了一个拍的阿里达摩院的视频,真的太牛皮了,23岁博士毕业,这就是天才吧
天才就是百分之一的灵感,和百分之九十九的汗水,对于天才来说,差了百分之一的灵感就不是天才了,但是对于普通人来说,就算有百分之一的灵感也没有卵用,差的是百分之九十九的汗水
天才23岁博士毕业,而凡人小张23岁才幡然醒悟,希望小张的人生,能够在有生之年进入阿里这样的充满技术与氛围的公司吧~
国内的网真是,300Mbps的宽带,上传速度只有100kb,服气服气
Beta Was this translation helpful? Give feedback.
All reactions