delay:对上一环节的操作整体进行延迟,只执行一次

  1. import { from } from "rxjs"
  2. import { delay, map, tap } from "rxjs/operators"
  3. from([1, 2, 3])
  4. .pipe(
  5. delay(1000),
  6. tap(n => console.log("已经延迟 1s", n)),
  7. map(n => n * 2),
  8. delay(1000),
  9. tap(() => console.log("又延迟了 1s"))
  10. )
  11. .subscribe(console.log)
  12. // tap 操作符不会对数据流造成影响, 它被用来执行简单的副作用, 比如输出, 但是复杂的副作用不要在这执行, 比如 Ajax

19.png

delayWhen:对上一环节的操作进行延迟,上一环节发出多少数据流,传入的回调函数就会执行多次

  1. import { range, timer } from "rxjs"
  2. import { delayWhen } from "rxjs/operators"
  3. range(1, 10)
  4. .pipe(
  5. delayWhen(n => {
  6. console.log(n)
  7. return timer(n * 1000)
  8. })
  9. )
  10. .subscribe(console.log)

20.png