RxJS repeat、takeWhile的用法

repeat操作符可以重复操作,takeWhile可以在满足一定条件时结束流,两者配合使用时需要注意顺序。

举栗说明

例子1

const { from } = rxjs
const { takeWhile, repeat } = rxjs.operators

from([1,2,3,4,5]).pipe(
  repeat(3),
  takeWhile(v => v !== 3),
).subscribe(console.log)

当repeat在takeWhile前面时,会无条件的重复from流,但是之后的结果会被takeWhile筛选,当不满足条件时整个流直接结束,因此输出结果是:

1
2

例子2

const { from } = rxjs
const { takeWhile, repeat } = rxjs.operators

from([1,2,3,4,5]).pipe(
  takeWhile(v => v !== 3),
  repeat(3),
).subscribe(console.log)

将两个操作符的位置互换,takeWhile会先筛选值,遇到3的时候流结束,然后repeat再重复以上过程,
因此结果为:

1
2
1
2
1
2

你可能感兴趣的:(RxJS repeat、takeWhile的用法)