take:获取数据流中的前几个

  1. import { range } from "rxjs"
  2. import { take } from "rxjs/operators"
  3. range(1, 10).pipe(take(5)).subscribe(console.log)

21.png

takeWhile:根据条件从数据源前面开始获取

  1. import { range } from "rxjs"
  2. import { takeWhile } from "rxjs/operators"
  3. range(1, 10)
  4. .pipe(takeWhile(n => n < 8))
  5. .subscribe(console.log)

22.png

takeUntil:接收可观察对象,当可观察对象发出值时,终止主数据源

  1. import { interval, timer } from "rxjs"
  2. import { takeUntil } from "rxjs/operators"
  3. interval(100)
  4. .pipe(takeUntil(timer(2000)))
  5. .subscribe(console.log)
  6. // 结果少两个数据流的原因:第一次和最后一次,都需要延迟 100 毫秒

23.png