rxjs6 Conditional and Boolean Operators & Mathematical and Aggregate Operators

牧云@^-^@ 提交于 2020-02-27 12:43:14

Conditional and Boolean Operators

defaultIfEmpty

如果源流在结束时没有发出一个值, 则发出一个默认值

const {of} = require('rxjs')
const {defaultIfEmpty} = require('rxjs/operators')
of(1, 2, 3).pipe(
  defaultIfEmpty('abc')
).subscribe(console.log)
of().pipe(
  defaultIfEmpty('abc')
).subscribe(console.log)

every

类似数组, 返回值为流中的数据是否都满足某个条件

const {of} = require('rxjs')
const {every} = require('rxjs/operators')
const source$ = of(1, 2, 3)
source$.pipe(
  every(x => x < 5)
).subscribe(console.log) // true
source$.pipe(
  every(x => x % 2)
).subscribe(console.log) // false

find & findIndex

返回第一个满足条件的值/位置, 第一个参数为比较函数, 第二个参数为比较函数执行时的this指向, 默认为空

const {of} = require('rxjs')
const {find, findIndex} = require('rxjs/operators')
const source$ = of(1, 2, 3, 4, 5, 6)
source$.pipe(
  find(x => x > 4)
).subscribe(console.log) // 5

source$.pipe(
  findIndex(x => x > 4)
).subscribe(console.log) // 4

isEmpty

判断序列是否在完成时没有发出值

const {of,EMPTY} = require('rxjs')
const {isEmpty} = require('rxjs/operators')
const source$ = of(1, 2, 3, 4, 5, 6)
source$.pipe(
  isEmpty()
).subscribe(console.log) // false

EMPTY.pipe(
  isEmpty()
).subscribe(console.log) // true

Mathematical and Aggregate Operators

count

对流中的数据计数

max

流中的最大值

min

流中的最小值

reduce

类似数组的reduce, 只会在流结束时发出值

scan

和reduce不同, 每次有一个值发出时, 就会执行函数, 并发出累加值

const {of, EMPTY} = require('rxjs')
const {count, max, min, reduce, scan} = require('rxjs/operators')
const source$ = of(1, 2, 3, 4, 5, 6)
source$.pipe(
  count()
).subscribe(console.log) // 6
source$.pipe(
  max()
).subscribe(console.log) // 6
source$.pipe(
  min()
).subscribe(console.log) // 1
function sum(pre, cur) {
  return pre + cur
}

source$.pipe(
  reduce(sum, 0)
).subscribe(console.log) // 21
console.log('===')
source$.pipe(
  scan(sum, 0)
).subscribe(console.log) // 1 3 6 10 15 21

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!