RxJS windowWhen

2020-10-14 10:45 更新

使用來將源 Observable 值分支為嵌套 Observable 關(guān)閉 Observables 的工廠功能,以確定何時啟動新的 窗口。

windowWhen<T>(closingSelector: () => Observable<any>): OperatorFunction<T, Observable<T>>

參量

關(guān)閉選擇器 一個不需要 參數(shù)并返回一個Observable信號(在 nextcomplete)何時關(guān)閉上一個窗口并開始一個新窗口。

returns

OperatorFunction<T, Observable<T>>:可觀察到的窗戶 是可觀察的。

描述

就像 bufferWhen,但發(fā)出嵌套 可觀察的而不是數(shù)組。

windowWhen marble diagram

返回一個 Observable,它發(fā)出從源收集到的項目的窗口 可觀察的。 輸出 Observable 發(fā)出連接的非重疊窗口。 它發(fā)出當(dāng)前窗口,并在可觀察到的任何時候打開一個新窗口。 由指定 closingSelector函數(shù)產(chǎn)生的發(fā)射項。 首先 訂閱輸出 Observable 時,窗口將立即打開。

在 [1-5] 個隨機(jī)秒的每個窗口中僅發(fā)出前兩次單擊事件

  1. import { fromEvent, interval } from 'rxjs';
  2. import { windowWhen, map, mergeAll, take } from 'rxjs/operators';
  3. const clicks = fromEvent(document, 'click');
  4. const result = clicks.pipe(
  5. windowWhen(() => interval(1000 + Math.random() * 4000)),
  6. map(win => win.pipe(take(2))), // each window has at most 2 emissions
  7. mergeAll() // flatten the Observable-of-Observables
  8. );
  9. result.subscribe(x => console.log(x));

也可以看看

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號