RxJS - 转换运算符 bufferCount

对于 buffercount 运算符,它将从调用它的可观察对象中收集值,并在 buffercount 指定的缓冲区大小匹配时发出相同的值。它需要 2 个参数 buffersize,第二个参数是 startBufferEvery,即,如果给定,它将从 startBufferEvery 计算新值,否则从源可观察对象的开头计算。

语法

bufferCount(bufferSize: number, startBufferEvery: number = null): Observable

参数

bufferSize −要发射的缓冲区的大小。

返回值

将返回一个可观察对象,它将具有一个缓冲值数组。

我们将看到一个 bufferCount() 的工作示例

示例 1

import { fromEvent } from 'rxjs';
import { bufferCount } from 'rxjs/operators';

let btn = document.getElementById("btnclick");

let btn_clicks = fromEvent(btn, 'click');
let buffered_array = btn_clicks.pipe(bufferCount(4));
buffered_array.subscribe(arr => console.log(arr));

在上面的例子中,bufferSize 为 4。因此,在计数 4 次点击后,点击事件数组将收集到一个数组中并显示出来。由于我们没有给出 startBufferEvery,因此值将从开始处开始计数。

输出

bufferCount Operator

示例 2

import { fromEvent } from 'rxjs';
import { bufferCount } from 'rxjs/operators';

let btn = document.getElementById("btnclick");
let btn_clicks = fromEvent(btn, 'click');
let buffered_array = btn_clicks.pipe(bufferCount(4, 2));
buffered_array.subscribe(arr => console.log(arr));

在这个例子中,我们添加了startBufferEvery,因此每2次点击后,它将显示4次点击事件的缓冲区计数。

输出

bufferCount Ex Operator