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
来源:oschina
链接:https://my.oschina.net/ahaoboy/blog/3164632