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ā)出前兩次單擊事件

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


const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowWhen(() => interval(1000 + Math.random() * 4000)),
  map(win => win.pipe(take(2))),     // each window has at most 2 emissions
  mergeAll()                         // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

也可以看看

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號