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
网友评论