RxJS bufferCount

2020-10-14 09:49 更新

緩沖源的 Observable 值,直到大小達(dá)到最大值 bufferSize 給定的。

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

參量

緩沖區(qū)大小 發(fā)出的緩沖區(qū)的最大大小。
startBufferEvery 可選的。 默認(rèn)值為 null。  開(kāi)始新緩沖區(qū)的時(shí)間間隔。  例如,如果 startBufferEvery為 2,則將啟動(dòng)一個(gè)新的緩沖區(qū)  來(lái)自來(lái)源的所有其他值。 一個(gè)新的緩沖區(qū)從  默認(rèn)情況下源的開(kāi)頭。

returns

OperatorFunction<T, T[]>:可觀察到的緩沖值數(shù)組。

描述

收集過(guò)去的值作為數(shù)組,并發(fā)出 該數(shù)組僅在其大小達(dá)到時(shí) bufferSize。

bufferCount marble diagram

到 緩沖來(lái)自源 Observable 的許多值 bufferSize那時(shí) 發(fā)出并清除緩沖區(qū),然后每個(gè)緩沖區(qū)啟動(dòng)一個(gè)新緩沖區(qū) startBufferEvery價(jià)值觀。 如果 startBufferEvery未提供或 null,然后新緩沖區(qū)將在源開(kāi)頭立即啟動(dòng) 當(dāng)每個(gè)緩沖區(qū)關(guān)閉并發(fā)出時(shí)。

例子

將最后兩個(gè)click事件作為數(shù)組發(fā)送

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

每次點(diǎn)擊時(shí),將最后兩個(gè)點(diǎn)擊事件作為數(shù)組發(fā)出

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

也可以看看

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)