美文网首页
10RxJS数字和条件操作符

10RxJS数字和条件操作符

作者: learninginto | 来源:发表于2021-01-09 14:20 被阅读0次
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

相关文章

网友评论

      本文标题:10RxJS数字和条件操作符

      本文链接:https://www.haomeiwen.com/subject/wrycaktx.html