count
计算源Observalbe推送的个数
const seconds = interval(1000)
const clicks = fromEvent(document, 'click')
const result = seconds.pipe(takeUntil(clicks)).pipe(count())
result.subscribe(x => console.log(x))
//通过takeUntil控制,当用户点击的时候接触,计算发送了多少个值
还可以设置只计算符合条件的流
const numbers = range(1, 7)
const result = numbers.pipe(count(i => i % 2 === 1))
result.subscribe(x => console.log(x))
//4(1,3,5,7共四个值)
max
求源Observable发出的最大值
of(5, 3, 7, 0, 2).pipe(max()).subscribe(x => console.log(x))
//7
也可以自定义比较规则,打印出年龄最大的一项
of(
{ age: 7, name: 'Foo' },
{ age: 5, name: 'Bar' },
{ age: 9, name: 'Beer' }
).pipe(
max((a, b) => a.age < b.age ? -1 : 1)
).subscribe((x) => console.log(x))
//{ age: 9, name: 'Beer' }
min
同上
defaultIfEmpty
当源Observable是空的源,没有发出任何值时,则指定发出一个默认值
const empty$ = EMPTY
const result = empty$.pipe(defaultIfEmpty('empty default val'))
result.subscribe(x => console.log(x))
//empty default val
isEmpty
判断是否是空的Observable
const result = EMPTY.pipe(isEmpty())
result.subscribe(x => console.log(x))
//true
findIndex
const clicks = fromEvent(document, 'click')
const result = clicks.pipe(findIndex(ev => (ev.target as HTMLElement).tagName === 'DIV'))
result.subscribe(x => console.log(x))
//点击当前div标签,是第一次触发click事件
find
const clicks = fromEvent(document, 'click')
const result = clicks.pipe(find(ev => (ev.target as HTMLElement).tagName === 'DIV'))
result.subscribe(x => console.log(x))
//直接打印mouseEvent事件
every
当所有条件都满足时,返回true
of(1, 2, 3, 4).pipe(
every(x => x < 3)
).subscribe(x => console.log(x))
//false
网友评论