RxJS exhaust

2020-10-14 10:09 更新

通過(guò)在先前內(nèi)部 Observable 尚未完成之前刪除內(nèi)部 Observable,將高階 Observable 轉(zhuǎn)換為一階 Observable。

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

參量

沒(méi)有參數(shù)。

returns

OperatorFunction<any, T>:一個(gè) Observable,它獲取 Observable 的源,并專門(mén)傳播第一個(gè) Observable,直到它完成,然后訂閱下一個(gè) Observable。

描述

在當(dāng)前內(nèi)部 Observable 仍在執(zhí)行時(shí),通過(guò)刪除下一個(gè)內(nèi)部 Observable 來(lái)展平 Observable-of-Observables。

排氣大理石圖

exhaust訂閱發(fā)出 Observable 的 Observable,也稱為高階 Observable。每次觀察到這些內(nèi)部可觀察對(duì)象發(fā)射的一個(gè)時(shí),輸出 Observable 便開(kāi)始發(fā)射該內(nèi)部可觀察對(duì)象發(fā)射的項(xiàng)目。到目前為止,它的行為類似于mergeAll。但是,exhaust如果先前的 Observable 尚未完成,則 忽略每個(gè)新的內(nèi)部 Observable。完成后,它將接受并展平下一個(gè)內(nèi)部 Observable,并重復(fù)此過(guò)程。

僅當(dāng)當(dāng)前沒(méi)有活動(dòng)的計(jì)時(shí)器時(shí),才為每次點(diǎn)擊運(yùn)行一個(gè)有限的計(jì)時(shí)器

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));

也可以看看

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)