codecamp

RxJS exhaust

通过在先前内部 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));

也可以看看

RxJS every
RxJS exhaustMap
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

RxJS operators

RxJS fetch

RxJS testing

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }