RxJS windowCount

2020-10-14 10:43 更新

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

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

參量

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

returns

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

描述

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

windowCount marble diagram

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

例子

從第一個(gè)事件開(kāi)始,忽略每個(gè)第3次點(diǎn)擊事件

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

從第三個(gè)點(diǎn)擊事件開(kāi)始,忽略每個(gè)第3次點(diǎn)擊事件

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)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)