RxJS windowCount
将源 Observable 值分支为每个嵌套的 Observable 值 嵌套的 Observable 发射最多 windowSize
值。
windowCount<T>(windowSize: number, startWindowEvery: number = 0): OperatorFunction
<T, Observable
<T>>
参量
windowSize | 每个发出的最大值数 窗口。 |
---|---|
startWindowEvery | 可选的。 默认值为 0 。 开始新窗口的时间间隔。 例如,如果 startWindowEvery 为 2 ,则将启动一个新窗口 来自来源的所有其他值。 一个新的窗口在 默认情况下源的开头。 |
returns
OperatorFunction<T, Observable<T>>
:可观察到的窗户 是可观察的值。
描述
就像 bufferCount
,但发出嵌套 可观察的而不是数组。
返回一个 Observable,它发出从源收集到的项目的窗口 可观察的。 输出 Observable 每次发射一个窗口 startWindowEvery
项,每个 最多包含 windowSize
项 项。 当来源 Observable 完成或遇到错误,输出Observable发出 当前窗口并传播来自源的通知 可观察的。 如果 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));