RxJS exhaust

2020-10-14 10:09 更新

通过在先前内部 Observable 尚未完成之前删除内部 Observable,将高阶 Observable 转换为一阶 Observable。

exhaust<T>(): OperatorFunction<any, T>

参量

没有参数。

returns

OperatorFunction<any, T>:一个 Observable,它获取 Observable 的源,并专门传播第一个 Observable,直到它完成,然后订阅下一个 Observable。

描述

在当前内部 Observable 仍在执行时,通过删除下一个内部 Observable 来展平 Observable-of-Observables。

排气大理石图

exhaust订阅发出 Observable 的 Observable,也称为高阶 Observable。每次观察到这些内部可观察对象发射的一个时,输出 Observable 便开始发射该内部可观察对象发射的项目。到目前为止,它的行为类似于mergeAll。但是,exhaust如果先前的 Observable 尚未完成,则 忽略每个新的内部 Observable。完成后,它将接受并展平下一个内部 Observable,并重复此过程。

仅当当前没有活动的计时器时,才为每次点击运行一个有限的计时器

import { fromEvent, interval } from 'rxjs';
import { exhaust, map, take } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const higherOrder = clicks.pipe(
  map((ev) => interval(1000).pipe(take(5))),
);
const result = higherOrder.pipe(exhaust());
result.subscribe(x => console.log(x));

也可以看看

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

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号