RxJS switchAll

2020-10-14 10:35 更新

仅从最新的可观察序列将高阶可观察值转换为一阶可观察值

switchAll<T>(): OperatorFunction<ObservableInput<T>, T>

参量

没有参数。

returns

  1. OperatorFunction<ObservableInput<T>, T>

描述

展平可观察的事物。

开关全大理石图

switchAll订阅可观察的可观测对象的源,也称为“高阶可观察对象”(或Observable<Observable<T>>)。它订阅源发出的最新提供的“内部可观察的”,取消订阅任何以前订阅的内部可观察的,因此在任何时间点只能订阅最新的内部可观察的。switchAll仅当源可观察对象完成并且当前订阅内部可观察对象的任何对象(如果有)也已完成时,返回的结果可观察对象将完成。

例子

为每个点击事件产生一个可观察到的新间隔,但是对于每个新点击,取消前一个间隔并订阅新间隔。

  1. import { fromEvent, interval } from 'rxjs';
  2. import { switchAll, map, tap } from 'rxjs/operators';
  3. const clicks = fromEvent(document, 'click').pipe(tap(() => console.log('click')));
  4. const source = clicks.pipe(map((ev) => interval(1000)));
  5. source.pipe(
  6. switchAll()
  7. ).subscribe(x => console.log(x));
  8. // Output
  9. // click
  10. // 1
  11. // 2
  12. // 3
  13. // 4
  14. // ...
  15. // click
  16. // 1
  17. // 2
  18. // 3
  19. // ...
  20. // click
  21. // ...

也可以看看

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号