RxJS windowCount

2020-10-14 10:43 更新

將源 Observable 值分支為每個嵌套的 Observable 值 嵌套的 Observable 發(fā)射最多 windowSize值。

windowCount<T>(windowSize: number, startWindowEvery: number = 0): OperatorFunction<T, Observable<T>>

參量

windowSize 每個發(fā)出的最大值數(shù) 窗口。
startWindowEvery 可選的。 默認值為 0。  開始新窗口的時間間隔。  例如,如果 startWindowEvery為 2,則將啟動一個新窗口  來自來源的所有其他值。 一個新的窗口在  默認情況下源的開頭。

returns

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

描述

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

windowCount marble diagram

返回一個 Observable,它發(fā)出從源收集到的項目的窗口 可觀察的。 輸出 Observable 每次發(fā)射一個窗口 startWindowEvery 項,每個 最多包含 windowSize項 項。 當來源 Observable 完成或遇到錯誤,輸出Observable發(fā)出 當前窗口并傳播來自源的通知 可觀察的。 如果 startWindowEvery未提供,則新窗口是 在源代碼的開始以及每個窗口完成時立即開始 與大小 windowSize

例子

從第一個事件開始,忽略每個第3次點擊事件

import { fromEvent } from 'rxjs';
import { windowCount, map, mergeAll, skip } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowCount(3),
  map(win => win.pipe(skip(1))), // skip first of every 3 clicks
  mergeAll()                     // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

從第三個點擊事件開始,忽略每個第3次點擊事件

import { fromEvent } from 'rxjs';
import { windowCount, mergeAll } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowCount(2, 3),
  mergeAll(),              // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

也可以看看

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號