codecamp

RxJS bufferCount

缓冲源的 Observable 值,直到大小达到最大值 bufferSize 给定的。

bufferCount<T>(bufferSize: number, startBufferEvery: number = null): OperatorFunction<T, T[]>

参量

缓冲区大小 发出的缓冲区的最大大小。
startBufferEvery 可选的。 默认值为 null。  开始新缓冲区的时间间隔。  例如,如果 startBufferEvery为 2,则将启动一个新的缓冲区  来自来源的所有其他值。 一个新的缓冲区从  默认情况下源的开头。

returns

OperatorFunction<T, T[]>:可观察到的缓冲值数组。

描述

收集过去的值作为数组,并发出 该数组仅在其大小达到时 bufferSize

bufferCount marble diagram

到 缓冲来自源 Observable 的许多值 bufferSize那时 发出并清除缓冲区,然后每个缓冲区启动一个新缓冲区 startBufferEvery价值观。 如果 startBufferEvery未提供或 null,然后新缓冲区将在源开头立即启动 当每个缓冲区关闭并发出时。

例子

将最后两个click事件作为数组发送

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


const clicks = fromEvent(document, 'click');
const buffered = clicks.pipe(bufferCount(2));
buffered.subscribe(x => console.log(x));

每次点击时,将最后两个点击事件作为数组发出

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


const clicks = fromEvent(document, 'click');
const buffered = clicks.pipe(bufferCount(2, 1));
buffered.subscribe(x => console.log(x));

也可以看看

RxJS buffer
RxJS bufferTime
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

RxJS operators

RxJS fetch

RxJS testing

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }